着信コンテンツタイプを見つけるには、 ドキュメントで言う :
request.headers["Content-Type"] # => "text/plain"
しかし、試行錯誤でそれが機能しないことを発見しましたが、これは機能します:
request.headers["CONTENT_TYPE"]=='application/json'
それを行うための最も堅牢でポータブルな方法は何ですか?
私は通常request.format
およびrequest.content_type
これらのヘッダーフィールドを読み取るため。
[〜#〜] edit [〜#〜]:これに役立つかもしれないもう少し見つけました: https:// stackoverflow。 com/a/1595453/62459
Content_type文字列を解析する必要はありません。Railsはすでにこれを実行しています。次の点を確認してください。
request.format.symbol == :json
それを書く別の方法:
request.format.json?
Equalsはオーバーロードされているため、#symbolを呼び出す必要はありません。
request.format == :json
request.format == 'application/json'
私にとって、着信要求がjsonであるかどうかを確認する最良の方法は次のとおりです。
if request.content_type =~ /json/