Aller au contenu
  • Nos offres
  • Blog
  • Contact
  • Carrières
Menu
  • Nos offres
  • Blog
  • Contact
  • Carrières
Inscrivez-vous à la newsletter

Inscrivez-vous à la newsletter

Abonnez-vous maintenant et nous vous tiendrons au courant.
Nous respectons votre vie privée. Vous pouvez vous désabonner à tout moment.

Blog

  • Accueil
  • Actualités
  • Cloud
  • Infrastructure
  • Données / Sécurité
  • Intégration
  • Dev / DevOps
  • SAM / FinOps
Menu
  • Accueil
  • Actualités
  • Cloud
  • Infrastructure
  • Données / Sécurité
  • Intégration
  • Dev / DevOps
  • SAM / FinOps
  • le 09/05/2018
  • Pierre Mazieres
  • Oracle Service Bus @fr

OSB : une autre façon de gérer les codes retours HTTP en REST

Partager sur linkedin
Partager sur twitter
Partager sur facebook

Présentation du problème

Dans cet article, Julien nous montre un moyen de gérer les codes retours HTTP.
Cette méthode est intéressante quand on passe directement par les connecteurs HTTP (et pas par la palette REST d’OSB).
Pour compléter, voici une autre méthode qui s’appuie directement sur les outils REST d’Oracle.

Création du projet

L’exemple sera un projet qui, pour un code postal, renvoie la commune associée.
Les erreurs seront :
– 404 Not Found : aucune commune ne correspond au code postal
– 406 Not Acceptable : le code postal n’est pas valide
– 500 Internal Server Error : plantage technique durant le traitement

Définition des erreurs

On commence par créer une XSD qui associera un élément spécifique par erreur.
schéma XSD des erreurs
Il est important de bien avoir un type différent par erreur. En effet, au moment de renvoyer la réponse, OSB regardera l’élément fourni et fera correspondre le code retour en conséquence.
Il faut éviter les élément vides. Cela provoque (parfois) des erreurs « unmarshalling » qui sont pénibles à traiter. Donc, penser à mettre du contenu, même minimaliste, pour être tranquille.

Création du pipeline et du WSDL

Dans une autre XSD, on déclare les formats d’entrée/sortie nominaux de type texte.
Ici, en entrée le code postal, en sortie le nom de la ville.
Ensuite on crée un pipeline de type WSDL :
création du pipeline WSDL
création du WSDL sans gestion des erreurs
Attention : On ne place pas les erreurs dans le WSDL à ce stade. Sinon OSB risque d’avoir du mal à gérer les retours.
extrait du WSDL sans gestion des erreurs

Exposition en tant que REST

Une fois le contrat défini, on expose le service en tant que REST.
Dans le partie réponse, on rajoute la gestion les erreurs en référant le type et le code d’erreur associés.
vue globale des erreurs REST
ajout d'une erreur REST
Si l’on ouvre le WADL généré, on retrouve nos erreurs avec pour chaque code retour le type d’erreur associé et la référence vers le WSDL.
configuration des erreurs dans le WADL
(OSB remonte des avertissements sur les éléments en réponse. Pour une raison inconnue, JDeveloper n’arrive pas à retrouver les objets même correctement définis. Cela n’empêche pas le déploiement et l’exécution correcte du flux.)
Si on ouvre le WSDL, on voit qu’il a été mis à jour avec l’ajout des erreurs.
WSDL mise-à-jour avec les erreurs

Gestion des codes retours

Maintenant, il reste à définir dans le process les conditions qui déclenchent les exceptions.

Création de l’erreur

Par exemple, dans cas où le code n’est pas valide, on remplit un body au format correspondant à l’erreur 406.
création d'une réponse en erreur
Il est important de garder le format du bloc « Fault » comme cela pour éviter qu’OSB le traite correctement.
A l’intérieur du bloc « detail », on ajoute notre erreur.
Pour les autres erreurs, on applique la même logique en adaptant l’erreur.

Application du code retour

Il reste à indiquer à OSB que le retour est en erreur.
Pour cela, il suffit de mettre un « Reply failure ».
Reply failure
Sachant qu’il s’agit d’une erreur, OSB va automatiquement assigner le code retour en fonction du type d’erreur défini juste au-dessus.

Tests

On peut maintenant tester les cas et voir les erreurs attendues

Pas d’erreur

réponse sans erreur

Code postal incohérent : 406

Code postal incohérent 406

Code postal inconnu : 404

Code postal inconnu 404

Erreur technique : 500

Erreur technique 500

Références

Maîtriser le code de réponse HTTP renvoyé par l’OSB : Article de Julien sur les codes retours HTTP
List of HTTP status codes : Liste des codes retours HTTP
SBTestRestHttpCode : Projet Oracle de retour HTTP en REST

Pierre Mazieres
Pierre Mazieres
Voir tous ses articles

Laisser un commentaire Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Articles récents
  • Azure Database pour PostgreSQL [PaaS]
  • Azure Logic Apps : l’outil d’intégration Cloud de Microsoft
  • Purge automatique des archivelogs en PL/SQL
  • ASM et l’importance du usable_file_mb
  • Préparer un Windows Server 2003 pour une migration sur Azure

Mentions légales & Politique de confidentialité

En poursuivant votre navigation, vous acceptez l'utilisation de cookies tiers destinés à réaliser des statistiques de visites et de suivi. Accepter Refuser Personnaliser En savoir plus
Politique de confidentialité et cookies

Politique de confidentialité

Les informations collectées au travers de nos cookies sont exploitées à des fins statistiques (Google Analytics).
Google Analytics
Enregistrer & appliquer

8 JUIN 2022 A PARIS | 8H30 - 18H30

TECH FOR CLIMATE ?

Opportunités et limites de la technologie pour faire face au défi climatique

Programme & Inscriptions

Un évènement imaginé avec 🖤 par Constellation