У меня есть некоторый javascript-интерфейс, который выполняет асинхронный http-запрос к моему внутреннему rails-серверу.На фронтенде я не использую XHR (я использую axios
, хотя это не совсем относится к вопросу).
В запросе я установил следующее, чтобы сообщить серверу, который отправляю JSON, и убедиться, что я возвращаю JSON:
const config = {
headers: {
"Content-Type": "application/json",
"Accept": "application/json"
}
};
В моем внутреннем контроллере Rails, если проверять запросЯ могу проверить заголовок Accept
:
> request.headers
"HTTP_ACCEPT"=>"application/json, text/plain, */*"
Однако ActionPack / Rails все еще не учитывает это и по умолчанию format
является :html
> request.format
=> #<Mime::Type:0x00007fe223919f80 @hash=-1773238723920954657, @string="text/html", @symbol=:html, @synonyms=["application/xhtml+xml"]>
Почему это так??
Я знаю, что могу добавить .json
к URL моего запроса, чтобы "принудительно" указать этот формат, но разве это единственный вариант?Я могу легко добавить его, но это похоже на реализацию, специфичную для Rails, а не на «правильный» подход.
Кроме того, исходный код для метода request.format
явно устанавливает :json
в качестве формата для запросов XHR - рельсы только учитывают запросы XHR в настоящее время?
Спасибо!