web-dev-qa-db-ja.com

リクエストのコンテンツタイプを取得する

着信コンテンツタイプを見つけるには、 ドキュメントで言う

 request.headers["Content-Type"] # => "text/plain"

しかし、試行錯誤でそれが機能しないことを発見しましたが、これは機能します:

 request.headers["CONTENT_TYPE"]=='application/json'

それを行うための最も堅牢でポータブルな方法は何ですか?

21
mahemoff

私は通常request.formatおよびrequest.content_typeこれらのヘッダーフィールドを読み取るため。

[〜#〜] edit [〜#〜]:これに役立つかもしれないもう少し見つけました: https:// stackoverflow。 com/a/1595453/62459

37
DRobinson

Content_type文字列を解析する必要はありません。Railsはすでにこれを実行しています。次の点を確認してください。

request.format.symbol == :json
23
Kent Mewhort

それを書く別の方法:

request.format.json?
17
montrealmike

Equalsはオーバーロードされているため、#symbolを呼び出す必要はありません。

request.format == :json
11
Tim Scott

request.format == 'application/json'

2
amn

私にとって、着信要求がjsonであるかどうかを確認する最良の方法は次のとおりです。

    if request.content_type =~ /json/
1
Leszek