-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
wanneer er meerdere parameters fout zijn moet je ze allemaal tegelijk melden #503
Comments
@strijm wat is hier nu precies opgelost? Er worden niet meerdere fouten tegelijk gemeld, zoals de foutafhandeling feature voorschrijft. wel is denk ik de voorrang regel van #498 doorgevoerd? Bijvoorbeeld: /panden?bbox=135228,457502,135246,457457&bouwjaar[min]=fout&bouwjaar[max]=fout&statusPand=fout&geconstateerd=fout |
@CathyDingemanse In de HC common foutafhandeling.feature staat dat als er meerdere parameters in een request een foutieve waarde bevatten, er één 400 (Bad request) response teruggegeven moet worden. Die foutmelding bevat dan één invalidParams sectie met daarin voor iedere foute parameter een melding met name, code, en reason. Dit is echter een bijzonder lastige requirement. Ik denk dat door deze requirement de implementatie aan de provider kant zo ingewikkeld wordt en wijzigingen in de toekomst zo kostbaar, dat daarmee het doel om clients een zo eenvoudig mogelijke API te bieden in geen verhouding staat tot de inspanning. Het gaat om een foutsituatie die zich niet zomaar voordoet. Het betekent dat de client zich op dat moment niet aan de API specificatie houdt. Aangezien de client code gegenereerd wordt uit de API specificatie, is de kans dat er foutieve waarden in een request terecht komen vrij klein. Daarnaast moet er in een client input validatie geïmplementeerd worden om te voorkomen dat er door een gebruiker ingevoerde waarden worden opgestuurd naar de provider. Een client applicatie zal zelf het nodige aan validaties moeten doen om zich aan het contract (API specificatie) te houden. M.i. is deze requirement in SMART termen dan ook niet wenselijk en op dit moment niet realistisch. |
Ok, dit kan dus niet generiek worden opgelost. Wij zullen de spec voor de BAG aanpassen. |
@strijm soms worden nu meerdere fouten wel samen geretourneerd, bijvoorbeeld:
weet jij in welke situaties (dus waarom hier wel en op andere plekken niet) er wel meerdere fouten tegelijkertijd worden? |
of bijvoorbeeld: /adresseerbareobjecten?nummeraanduidingIdentificatie=0599200000193766&expand=geenResource&fields=geenProperty&pageSize=1000
|
Parameter fouten kunnen alleen worden gecombineerd in één foutmelding als het type van alle parameter waarden overeenkomt met het gespecificeerde type van die parameters. Als één van de parameters bv. van type integer is of een array van integer en er wordt een letter opgegeven, dan treedt er een fout op bij het omzetten van de waarde naar het gespecificeerde type (parsing). Er treedt dan een foutmelding op dat het type van de waarde van die parameter niet juist is. In dat geval wordt er niet meer verder gekeken naar evt. andere parameters en kunnen foutmeldingen niet worden gecombineerd in één foutmelding.
Als de waarde van alle parameters wel van het juiste type zijn (parsing van alle parameter waarden is gelukt), dan kan er worden gevalideerd of de waarden conform specificatie zijn. Als één of meer waarden van parameters niet in de gespecificeerde waarde range liggen, dan kunnen fouten wel worden gecombineerd in één foutmelding. |
@strijm komt het bovenstaande lijstje niet overeen met alle parameters die gedefinieerd zijn als integer, number, Boolean of enumeratie? (strings kunnen immers altijd worden gesteriliseerd) |
Ja en arrays met deze types en objecten. Een URI is gewoon een string. De waarden van parameters moet afhankelijk van het type geparsed worden van een string naar het type zoals gespecificeerd in de API spec. De waarde van een string parameter hoeft dus niet geparsed te worden. |
Wanneer meerdere parameters verkeerd zijn ingevuld moeten alle fouten in één keer worden gemeld. Anders zal de gebruiker alleen de gemelde fout herstellen en nog een keer een fout request sturen.
In foutafhandeling.feature staat hierover: "Wanneer er fouten zitten op meerdere parameters, wordt er per validatiefout een "invalidParams" instantie opgenomen in het antwoord. Alle fouten worden dus teruggegeven."
Bijvoorbeeld /panden?bbox=135207,457400,135418,457162,fout&bouwjaar%5Bmin%5D=fout&bouwjaar%5Bmax%5D=1940 geeft 1 invalidParams, terwijl ik er twee verwacht had (op bbox en op bouwjaar[min]):
Bijvoorbeeld /adressen?postcode=fout&huisnummer=fout geeft 1 invalidParams, terwijl ik er twee verwacht had (op postcode en op huisnummer):
Bij een combinatie van een fout in een queryparameter plus een fout in een (crs) header zou ik dat ook graag zien, maar kan dat nu niet beide in invalidParams. Maar kan wel door beide titles samen te voegen. En/of door beide fouten in details te melden.
Bijvoorbeeld /panden?bbox=135228,457502,135246,457457,fout met request header 'Content-Crs: WGS84' geeft alleen de fout op bbox, niet op content-crs, ik had beide verwacht in title en detail:
N.B. dit kan niet wanneer de verschillende fouten verschillende http status codes geeft. Dus bijvoorbeeld wanneer een niet ondersteunde Content-CRS wordt gevraagd en ook een parameter fout is, kan je onmogelijk tegelijk een 400 (voor de parameter) en een 406 (voor de CRS) geven. In bovengenoemde gevallen kan dat wel, want het gaat allemaal om fouten onder statuscode 400.
The text was updated successfully, but these errors were encountered: