获取内容请求类型

时间:2013-03-05 15:06:39

标签: ruby-on-rails http rest ruby-on-rails-3.1 mime

要查找传入的内容类型docs say

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

但我通过反复试验发现,这不起作用,但确实如此:

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

那么最强大+便携的方式是什么?

7 个答案:

答案 0 :(得分:32)

我通常会选择request.formatrequest.content_type来阅读这些标题字段。

编辑:在此方面找到了一些可能有帮助的内容:https://stackoverflow.com/a/1595453/624590

答案 1 :(得分:23)

您不需要解析content_type字符串,Rails已经为您完成了此操作。请检查:

request.format.symbol == :json

答案 2 :(得分:14)

Another way of writing it:

request.format.json?

答案 3 :(得分:11)

因为equals超载所以不需要调用#symbol:

request.format == :json

答案 4 :(得分:2)

request.format ==' application / json'

答案 5 :(得分:1)

对我来说,检查传入请求是否为json的最佳方法是:

    if request.content_type =~ /json/

答案 6 :(得分:0)

严重需要重点了解。参考带有仅API的Rails 6.x项目

您必须确定为什么要request.content_type或request.headers ['Content-Type']吗?在下面解释...

  1. request.format或request.headers ['Accept']是客户端希望通过API(服务或服务器)请求响应的格式。

  2. request.content_type或request.headers ['Content-Type']是API(服务或服务器)期望来自请求的数据格式。

因此,如果API(服务或服务器)希望在application / json中请求数据,那么您就可以使用request.content_type或request.headers ['Content-Type']