Heerlijk fietsenstallingonderwerp.
Ik ben het wel met @Voutloos en @Mugwump eens. Tenzij je een REST API ontwerpt die heel precies aansluit op het resource-model van HTTP, kun je het beter niet te ingewikkeld maken, want de kans dat er een HTTP statuscode is die precies aansluit op de applicatiefout die optreedt is vrij klein, en als het niet superduidelijk is wat de statuscode betekent, moet je toch documenteren wanneer welke statuscodes kunnen voorkomen, en dan win je weinig met het gebruik van gestandaardiseerde statuscodes t.o.v. een algemene code met details in de response body.
Natuurlijk kun je nog wel bepaalde HTTP statuscodes gebruiken voor generieke situaties die eigenlijk nog voor de daadwerkelijke applicatielogica liggen. Bijvoorbeeld 404 voor een API endpoint die überhaupt niet bestaat, of 429 als je tegen rate limiting aanloopt, maar binnen de applicatie zou ik fouten ook gewoon mappen naar 400 (als de client request ongeldig is) of 500 (als er een fout optreedt in de server), en het verder niet ingewikkelder maken.
Ik ben het wel met @Voutloos en @Mugwump eens. Tenzij je een REST API ontwerpt die heel precies aansluit op het resource-model van HTTP, kun je het beter niet te ingewikkeld maken, want de kans dat er een HTTP statuscode is die precies aansluit op de applicatiefout die optreedt is vrij klein, en als het niet superduidelijk is wat de statuscode betekent, moet je toch documenteren wanneer welke statuscodes kunnen voorkomen, en dan win je weinig met het gebruik van gestandaardiseerde statuscodes t.o.v. een algemene code met details in de response body.
Natuurlijk kun je nog wel bepaalde HTTP statuscodes gebruiken voor generieke situaties die eigenlijk nog voor de daadwerkelijke applicatielogica liggen. Bijvoorbeeld 404 voor een API endpoint die überhaupt niet bestaat, of 429 als je tegen rate limiting aanloopt, maar binnen de applicatie zou ik fouten ook gewoon mappen naar 400 (als de client request ongeldig is) of 500 (als er een fout optreedt in de server), en het verder niet ingewikkelder maken.
:strip_exif()/f/image/b0qYT95eNoPb8Nnmz53fjf0r.png?f=user_large)
/f/image/ZpqzEKjkJW46Gp1rPClRbqqE.png?f=fotoalbum_large)
:strip_exif()/f/image/d7gwRqSuzll1RbTCOOpDpPCw.png?f=user_large)
