Какой код состояния / сообщение об ошибке использовать, если подразумеваемый ресурс не найден - PullRequest
0 голосов
/ 16 февраля 2019

Допустим, у меня есть конечная точка /process, которая принимает запрос POST с object_id.Однако моему API необходимо получить доступ к нескольким дочерним объектам объекта с идентификатором object_id, чтобы определить его ответ.

Если объект найден, а дети - нет, какой код состояния и сообщение об ошибке я должен вернуть?

Поскольку я хочу сообщить конечному пользователю, что что-то пошло не так, как возвращениепустой ответ, я вижу несколько вариантов:

  • 400 Bad Request.Однако это может ошибочно указывать на то, что с запросом что-то не так.
  • 404 Not Found.Однако это может ошибочно означать, что объект, на который ссылается object_id, не существует, что он делает.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Во-первых, вам необходимо определить, является ли проблема клиентской или серверной.Ошибки 4XX для плохих запросов.Подразумевается, что с запросом, отправленным пользователем, что-то не так.Если не удается найти объект из-за проблем на стороне сервера, я думаю, что лучше выдать ошибку на стороне сервера (то есть 5XX).

Обновление:

После комментария от OP мойпредложение: 412 (Precondition Failed).Кроме того, я думаю, что статусы Not-Found и No-Content не соответствуют вашему сценарию.

0 голосов
/ 16 февраля 2019

Я не думаю, что есть стандартный код состояния HTTP для этого сценария.4xx коды подразумевают ошибку клиента , тогда как 5xx - для ошибки сервера .Возможно, в этом случае в запросе нет ничего плохого, поэтому вы можете вернуть пользовательский код состояния 5xx.

Однако некоторые стандартные коды состояния подходят близко:

  • 409 Conflict
  • 422 Unprocessable Entity
  • и даже 404 Not Found
...