Bonjour.
J'ai une application qui fait appel à une API externe PersonAPI de cette façon :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public void modifierPersonne() { //Traider input PersonDto output = personApi.modify(input); //Traiter output } public void creerPersonne() { //Traider input PersonDto output = personApi.create(input); //Traiter output }
L'API retourne ce genre de JSON :
Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 { code: 200, messages: [], data: { person: {name: "name", age: 100, ...} } }
Problème, la gestion des erreurs est mal conçue et l'API peut retourner un code HTTP 200 avec des données tel que :
Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 { code: 400, messages: [ severity: "ERROR", content: "Invalid character in 'name'" ], data: { person: {name: "א", age: 100, ...} } }
Ce comportement ne pouvant pas changer, je souhaite m'adapter, mais si possible sans toucher au code existant (base de code assez grande).
Les Aspects semblent être une bonne solution, j'en utilise déjà pour log des appels de fonctions très précises.
Je pense intercepter les données de retour et envoyer une exception si le champ severity est "ERROR".
Je voudrais savoir si il est possible d'intercepter le processus juste après que la fonction ait retourné le JSON (retour de personApi.create()) mais avant que la valeur soit assignée àpoutput ?
Sinon si il y existe une option plus pertinente ?
Partager