Ik heb een vraagje over wat de juiste manier (of de meest gangbare manier) is om een webservice response te genereren.
ik heb nu een aantal webservice communicaties lopen met verschillende klanten / leveranciers. Iedere klant / leverancier heeft natuurlijk op zijn eigen manier zijn webservice opgezet.
ik stuur bijvoorbeeld naar klant A, B en naar C de volgende XML (per klant verschilt de XML uiteraard, maar even voor het idee):
nu krijg ik van klant A de volgende response, met een HTTP statuscode 200 (OK):
nu krijg ik van klant B dezelfde response, maar dan met HTTP statuscode 40x / 50x (x E [0-9]).
van klant C krijg ik een HTTP statuscode 40x / 50x (x E [0-9]) terug, met wat error-tekst als returnwaarde.
Naar mijn idee zou ik alleen een HTTP statuscode 400 of hoger terug moeten krijgen indien mijn XML zelf verkeerd gevormd is, of ik de verkeerde service aanroep. Als mijn request XML gewoon goed is, maar de gevraagde actie een <succeeded>false</succeeded> teruggeeft omdat bijv de order niet bekend is, of de door mij ingevulde waarden niet aan de voorwaarden voldoen, etc, verwacht ik gewoon een HTTP 200 terug, met in de response XML de foutmelding.
m.a.w. m.i. moeten de HTTP statuscodes 400 en hoger alleen gebruikt worden voor fouten in de XML communicatie zelf... voor fouten in de verwerking van de XML (dus bijv. order is reeds afgesloten, dus quotation kan niet) zelf zou m.i. gewoon een HTTP statuscode 200 moeten worden teruggegeven met in de response XML de foutmelding.
In mijn ogen doet klant A uit mijn voorbeeld het dus goed. Maar heb ik hier wel gelijk in? Wat is de norm?
(ik hoop dat ik mijn vraag een beetje duidelijk heb kunnen maken?)
ik heb nu een aantal webservice communicaties lopen met verschillende klanten / leveranciers. Iedere klant / leverancier heeft natuurlijk op zijn eigen manier zijn webservice opgezet.
ik stuur bijvoorbeeld naar klant A, B en naar C de volgende XML (per klant verschilt de XML uiteraard, maar even voor het idee):
XML:
1
2
3
4
| <?xml> <request> <quotation>approved</quotation> </request> |
nu krijg ik van klant A de volgende response, met een HTTP statuscode 200 (OK):
XML:
1
2
3
4
| <?xml> <response> <succeeded>false</succeeded> </response> |
nu krijg ik van klant B dezelfde response, maar dan met HTTP statuscode 40x / 50x (x E [0-9]).
van klant C krijg ik een HTTP statuscode 40x / 50x (x E [0-9]) terug, met wat error-tekst als returnwaarde.
Naar mijn idee zou ik alleen een HTTP statuscode 400 of hoger terug moeten krijgen indien mijn XML zelf verkeerd gevormd is, of ik de verkeerde service aanroep. Als mijn request XML gewoon goed is, maar de gevraagde actie een <succeeded>false</succeeded> teruggeeft omdat bijv de order niet bekend is, of de door mij ingevulde waarden niet aan de voorwaarden voldoen, etc, verwacht ik gewoon een HTTP 200 terug, met in de response XML de foutmelding.
m.a.w. m.i. moeten de HTTP statuscodes 400 en hoger alleen gebruikt worden voor fouten in de XML communicatie zelf... voor fouten in de verwerking van de XML (dus bijv. order is reeds afgesloten, dus quotation kan niet) zelf zou m.i. gewoon een HTTP statuscode 200 moeten worden teruggegeven met in de response XML de foutmelding.
In mijn ogen doet klant A uit mijn voorbeeld het dus goed. Maar heb ik hier wel gelijk in? Wat is de norm?
(ik hoop dat ik mijn vraag een beetje duidelijk heb kunnen maken?)