2015-12-01 3 views
0

Я создаю API, в котором можно получить номер POST по номеру /users/1/suggestions/make, чтобы получить новое предложение. Есть два случая:Ответ API JSON на сбор POST, который не может быть выполнен

  • сервер может создать предложение, основанное на POST ред Params, в этом случае код 200 состояния, возвращается вместе с созданным предложением;
  • сервер не может создать предложение на основе POST ed params, и в этом случае я не уверен, какой код состояния возвращать (200, так как запрос был выполнен успешно, но ничего не могло быть предложено, 404, потому что предложение не могло быть вычислено, или что-то еще) и какой контент (nil, пустой ответ, что-то еще).
+1

По моему мнению, статус «200» должен быть возвращен, так как он показывает, что запрос был успешным, и возвращает JSON, который отображает сообщение, например «никаких предложений, сделанных для данного ввода». – Raman

ответ

1

Если POST неудачен из-за параметров не проходящих проверку, уместно вернуться HTTP 400 Bad Request. Тело ответа должно состоять из списка ошибок, вызвавших отказ.

Таким образом, пользователю API понятно, что данные не были изменены.

+0

Это звучит логично, но На самом деле у меня нет ошибок проверки. Я отправляю некоторые параметры, и на их основе это задача сервера, чтобы вычислить предложение. Это означает, что запрос запускается в базе данных, и если он что-то возвращает, создается объект «Предложения». В противном случае это не так. Поэтому вы не можете выдать плохой запрос; все запросы действительны, это то, что сервер может доставить. – linkyndy

+1

Ах, извините, я неверно истолковал ваши намерения. В этом случае «200» с пустым телом или «{» предложение «: null» 'будет в порядке. –

+0

Или, может быть, '204', который утверждает, что запрос успешно, но нет контента? – linkyndy