REST-API-Framework. Empfohlene Verhalten für ungültig querystring-parameter
Ich die Umsetzung einer REST-API-Framework, und ich Frage mich, was die recommendedbehavior ist, wenn ein client sendet eine ungültige querystring-parameter.
Werde ich veranschaulichen, was ich meine mit einem konkreten Beispiel:
Sagen, ich haben eine API-handler auf die /api/contacts/Endpunkt, und der handler stellt einen querystring-filter mit dem Namen id
, die es dem Kunden ermöglicht, wählen Sie bestimmten Kontakten mit den zur Verfügung gestellten IDs.
So, einen GET-oder DELETE-Anforderung könnte /api/contacts/?id=2&id=4&id=lalalala
.
Klar, es gibt keine solche Sache wie ein Kontakt mit id=lalalala
. In diesem Fall, was sollte der server sich so Verhalten?
-
Ignorieren die ungültigen Kontakt mit
id=lalalala
, und nur filtern Sie die Kontakte auf die gültigen ids, 2 und 4. -
Antwortet mit einem Fehler-code, der angibt, dieser Fehler. Wenn ja, welcher Fehler-code sollte zur Verfügung gestellt werden?
Vielen Dank im Voraus.
Edit: um Zu klären, wobei Der Schwerpunkt auf der Rahmen, den ich zu entwickeln, ist ein vorhersehbares Verhalten, und damit response-codes. Aus diesem Grund möchte ich die clients verbrauchen eine API basierend auf diesem framework, zu erwarten, die geringsten überraschungen.
Also, die Frage ist grundsätzlich: Soll die API einen Fehler zurückgeben, in diesem Fall(und wenn ja, welche)? Oder ignorieren Sie ungültige Einträge filtern, und filter nur auf den richtigen querystring-Parameter?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da dies ein REST-Aufruf sprechen wir über die Ressourcen. Und wenn wir einen falschen filter, wir sollten wieder zurück, eine richtige Fehler-code.
In diesem Fall würde ich für
400 - bad request
wie die Ressource wurde gefunden und richtig zugeordnet (/api/contacts
), aber es gab ein problem mit derquery string
Teil. Daher400
und nicht ein404
.Zurückkehren würde eine
404
wenn jemand angefordert/api/contacts-all
oder einige nicht-existente Ressource.BEARBEITEN basierend auf den Kommentaren unten
Stimmen zu Ihrem Kommentar. Idealerweise ein
400
ist ein problem mit der Anfrage. Danach könnte man eine422 Unprocessable Entity
. Bitte schauen Sie auf der stackoverflow-link unten, und er spricht über die gleiche Sache.Ich würde vermuten, dass Entwickler auf der ganzen Welt angenehmer wäre zu sehen, eine
400
als422
für solche logischen Fehler aufgrund der Tatsache, dass größere Unternehmen sind mit400
und nicht422
.Referenzen:
Http-status-codes und
400 für logische Fehler vs ungültige Anfrage
Nach den Buchstaben des Gesetzes, die Antwort sollte ein 404 not found. Jedoch, niemand wird dich zu sehr aufgeregt mit, wenn Sie lieber zurückgeben 400 - bad request.
Ich würde auf jeden Fall zurück ein 4XX-Statuscode obwohl. Sie möchten, dass der client wissen, dass Sie einen Fehler gemacht.