2016-01-21 4 views
1

Какого формата ошибка должна использоваться RESTful API, когда согласование содержания не удается (ActionController::UnknownFormat поднята):Rails RESTful API: правильный формат ошибка при согласовании содержания не может

  • когда контроллер реагирует на только одного формата (например, JSON), и пользователь запросил другую (например, XML), должна ли ошибка генерироваться как объект JSON или XML?
  • , когда контроллер отвечает на несколько форматов, и пользователь не запросил ни одного из них, какой из них следует использовать при генерации ошибок: один из «известных» контроллером или тот, который был запрошен пользователем?

ответ

1

Я думаю, что вы не обязаны отвечать на любой неверный запрос в том же формате, в котором был сделан запрос. Представьте себе получение запроса с полезной нагрузкой в ​​неизвестном двоичном формате - что вы должны делать в таком случае.

ActionController::UnknownFormatshould триггер 406 Not Acceptable ответ, вероятно, будет в Rails 5.

Вы должны спасти ActionController::UnknownFormat и реагировать с соответствующим кодом HTTP, а также установить Accept заголовок со списком всех форматов, что ваш API поддерживает (если Rails Безразлично Не делайте этого по умолчанию, я не уверен)

+0

Rails 4.1.1 по умолчанию отвечает на 'ActionController :: UnknownFormat': - с объектом xml/yaml, если' application/xml' или 'application/yaml' была запрошена; - в противном случае он отвечает пустой страницей html с заголовком 'Content-Type: text/html' – DreamWalker

Смежные вопросы