Moet een RESTful API 400 of 404 retourneren wanneer een ongeldige id wordt doorgegeven

Als u een RESTful API bouwt en een gebruiker een idvan een bron geeft die niet bestaat, moet u 404 Not Foundof 400 Bad Request.

Bijvoorbeeld:

https://api.domain.com/v1/resource/foobar

Waar foobarniet bestaat.


Antwoord 1, autoriteit 100%

Ik zou 404 retourneren in het geval dat de bron niet bestaat (wat betekent dat het URL-pad verkeerd is) en ik zal 400 alleen retourneren als de rest aanroep wordt gedaan met bijvoorbeeld ongeldige gegevens (@PathParam)
https://api.domain.com/v1/profile/[email protected]: hier probeer ik om profiel van e-mail-ID te krijgen, maar de e-mail zelf is verkeerd, dus ik zal 400 retourneren.
https://api.domain.com/v1/profile1111/[email protected]zal retourneer 404 omdat het URL-pad ongeldig is.


Antwoord 2, autoriteit 48%

Moet 404 zijn ( niet gevonden ). 400 wordt gebruikt als u niet aan het verzoek kunt voldoen vanwege een slechte syntaxis, maar in uw geval is de syntaxis correct, maar er is geen resource foobar.

U kunt 400 gebruiken als de gebruiker een niet-bestaande API gebruikt, zoals hieronder:

https://api.domain.com/v1/nonexistAPI/xyz/xyz

Je kunt ook deze REST API Design Blograadplegen, die je vertelt hoe je je REST ontwerpt foutcodes.


Antwoord 3, autoriteit 36%

404 Not Foundis het juiste antwoord denk ik, 400gaat meer over de hoofdtekst van de verzoeken en niet over de resource-ID, dus je kunt die bijvoorbeeld verzenden door validatiefouten.


Antwoord 4, autoriteit 20%

Is het een geldig verzoek? Kan de id van de bron bestaan? Is het geformatteerd als een juiste id? Is het syntactisch correct? etc.. Zo ja, dan kunt u 404 Not Foundgebruiken. Anders is 400 Bad Requestgeschikter.


Antwoord 5, autoriteit 16%

Volgens de RFC (https://www.rfc-editor. org/rfc/rfc2616#section-10.4)
de API zou 404 moeten retourneren wanneer

“De server heeft niets gevonden dat overeenkomt met de Request-URI”,

wat is jouw voorbeeld.

400 zou zijn wanneer de bron wordt gevonden, maar het verzoek zelf is onjuist opgemaakt.

Bijvoorbeeld:
I.
https://api.domain.com/v1/resource/foobar

waar foobar NIET bestaat, moet 404 retourneren

ii.
https://api.domain.com/v1/resource/foobar
waar foobar WEL bestaat, maar het verzoek is verkeerd ({age:"NOTANINTEGER"}, bijvoorbeeld een stringin plaats van een int), het zou 400 moeten teruggeven.

Ik hoop dat ik kan helpen.


Antwoord 6, autoriteit 9%

404zou een meer gangbare praktijk zijn. Het is voor Resource Not Found. In uw geval wordt de betreffende URL niet gevonden.

400wordt over het algemeen gebruikt voor Bad Request. Je kunt deze gebruiken voor elk slecht verzoek. Voor bijv. MissingRequiredQueryParameter, InvalidInput.

Other episodes