Может ли служба http вернуть HTTP 400 (неверный запрос), если обязательный параметр отсутствует?

Может ли служба http вернуть HTTP 400 (неверный запрос), если обязательный параметр отсутствует? Когда я читаю, кажется, что http 400 следует возвращать только при синтаксических ошибках в запросе, но могу ли я так обрабатывать отсутствующий аргумент?


person xastor    schedule 23.06.2014    source источник


Ответы (1)


Вы спрашиваете с точки зрения клиента или с точки зрения сервера? С точки зрения клиента сервер может вернуть любую ошибку по любой причине; это вне вашего контроля. Хороший сервер вернет ошибку 400 в ситуации, когда он скажет вам, что никогда не выполнит запрос, потому что считает, что с запросом что-то не так. Единственным решением ошибки 400 является чтение спецификации запросов к серверу и исправление запроса в вашем коде. Если обязательный параметр отсутствует, вам, безусловно, придется прочитать спецификацию сервера и исправить свой код, поэтому ошибка 400 (отчасти) уместна.

Если вы пишете серверный код, вы всегда должны возвращать наиболее подходящую ошибку, помня о том, что сообщение об ошибке предназначено для того, чтобы либо клиент мог сообщить о проблеме пользователю, либо клиент мог попытаться исправить проблему или обработайте его надлежащим образом, иначе клиенту могут потребоваться изменения кода для устранения проблемы. Сообщения о неправильных кодах ошибок, скорее всего, запутают клиентов или заставят коды клиентов применять хаки при доступе к вашему серверу с риском того, что эти хаки сломаются, когда код сервера будет исправлен. Тем не менее, я не могу найти код ошибки, который был бы явно более правильным, чем 400 для отсутствующего обязательного параметра.

person gnasher729    schedule 23.06.2014