Σημασία κωδικού σφάλματος HTTP 400 BAD request;

Έχω ένα αίτημα JSON το οποίο αποστέλλω σε μια διεύθυνση URL HTTP.

Θα πρέπει αυτό να αντιμετωπιστεί ως 400 όπου το πεδίο requestedResource υπάρχει αλλά το "Roman" είναι μια άκυρη τιμή για αυτό το πεδίο;

[{requestedResource:"Roman"}] 

Θα πρέπει να αντιμετωπιστεί ως 400 όπου το πεδίο "blah" δεν υπάρχει καθόλου;

[{blah:"Roman"}]

Το 400 σημαίνει ότι η αίτηση ήταν κακοσχηματισμένη. Με άλλα λόγια, η ροή δεδομένων που έστειλε ο πελάτης στον διακομιστή δεν ακολούθησε τους κανόνες.

Στην περίπτωση ενός REST API με ωφέλιμο φορτίο JSON, τα 400's συνήθως, και σωστά θα έλεγα, χρησιμοποιούνται για να υποδείξουν ότι το JSON είναι άκυρο με κάποιο τρόπο σύμφωνα με τις προδιαγραφές API για την υπηρεσία.

Με αυτή τη λογική, και τα δύο σενάρια που παρέθεσες θα έπρεπε να είναι 400's.

Φανταστείτε αντί αυτού να επρόκειτο για XML αντί για JSON. Και στις δύο περιπτώσεις, η XML δεν θα περνούσε ποτέ την επικύρωση σχήματος - είτε λόγω ενός μη καθορισμένου στοιχείου είτε λόγω μιας ακατάλληλης τιμής στοιχείου. Αυτό θα ήταν ένα κακό αίτημα. Το ίδιο συμβαίνει και εδώ.

Σχόλια (6)

Από w3.org

10.4.1 400 Κακή αίτηση &gt, Η αίτηση δεν μπόρεσε να γίνει κατανοητή από τον διακομιστή λόγω κακοσχηματισμένου σύνταξη. Ο πελάτης ΔΕΝ ΠΡΕΠΕΙ να επαναλάβει την αίτηση χωρίς τροποποιήσεις.

Σχόλια (5)

Σκεφτείτε τις προσδοκίες.

Ως εφαρμογή-πελάτης, περιμένετε να γνωρίζετε αν κάτι πάει στραβά στην πλευρά του διακομιστή. Αν ο διακομιστής πρέπει να πετάξει ένα σφάλμα όταν λείπει το blah ή η τιμή requestedResource είναι λανθασμένη, τότε ένα σφάλμα 400 θα ήταν κατάλληλο.

Σχόλια (0)