Περισσότερα
Σημασία κωδικού σφάλματος HTTP 400 BAD request;
Έχω ένα αίτημα JSON το οποίο αποστέλλω σε μια διεύθυνση URL HTTP.
Θα πρέπει αυτό να αντιμετωπιστεί ως 400
όπου το πεδίο requestedResource
υπάρχει αλλά το "Roman"
είναι μια άκυρη τιμή για αυτό το πεδίο;
[{requestedResource:"Roman"}]
Θα πρέπει να αντιμετωπιστεί ως 400
όπου το πεδίο "blah"
δεν υπάρχει καθόλου;
[{blah:"Roman"}]
332
3
Το 400 σημαίνει ότι η αίτηση ήταν κακοσχηματισμένη. Με άλλα λόγια, η ροή δεδομένων που έστειλε ο πελάτης στον διακομιστή δεν ακολούθησε τους κανόνες.
Στην περίπτωση ενός REST API με ωφέλιμο φορτίο JSON, τα 400's συνήθως, και σωστά θα έλεγα, χρησιμοποιούνται για να υποδείξουν ότι το JSON είναι άκυρο με κάποιο τρόπο σύμφωνα με τις προδιαγραφές API για την υπηρεσία.
Με αυτή τη λογική, και τα δύο σενάρια που παρέθεσες θα έπρεπε να είναι 400's.
Φανταστείτε αντί αυτού να επρόκειτο για XML αντί για JSON. Και στις δύο περιπτώσεις, η XML δεν θα περνούσε ποτέ την επικύρωση σχήματος - είτε λόγω ενός μη καθορισμένου στοιχείου είτε λόγω μιας ακατάλληλης τιμής στοιχείου. Αυτό θα ήταν ένα κακό αίτημα. Το ίδιο συμβαίνει και εδώ.
Από w3.org
Σκεφτείτε τις προσδοκίες.
Ως εφαρμογή-πελάτης, περιμένετε να γνωρίζετε αν κάτι πάει στραβά στην πλευρά του διακομιστή. Αν ο διακομιστής πρέπει να πετάξει ένα σφάλμα όταν λείπει το
blah
ή η τιμήrequestedResource
είναι λανθασμένη, τότε ένα σφάλμα 400 θα ήταν κατάλληλο.