要查找传入的内容类型docs say:
request.headers["Content-Type"] # => "text/plain"
但我通过反复试验发现,这不起作用,但确实如此:
request.headers["CONTENT_TYPE"]=='application/json'
那么最强大+便携的方式是什么?
答案 0 :(得分:32)
我通常会选择request.format
和request.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']吗?在下面解释...
request.format或request.headers ['Accept']是客户端希望通过API(服务或服务器)请求响应的格式。
request.content_type或request.headers ['Content-Type']是API(服务或服务器)期望来自请求的数据格式。
因此,如果API(服务或服务器)希望在application / json中请求数据,那么您就可以使用request.content_type或request.headers ['Content-Type']