要查找传入的内容类型,文档说:
request.headers["Content-Type"] # => "text/plain"
但是我通过反复试验发现,这是行不通的,但这确实:
request.headers["CONTENT_TYPE"]=='application/json'
那么最强大+便携的方法是什么?
要查找传入的内容类型,文档说:
request.headers["Content-Type"] # => "text/plain"
但是我通过反复试验发现,这是行不通的,但这确实:
request.headers["CONTENT_TYPE"]=='application/json'
那么最强大+便携的方法是什么?
我通常会去request.format
阅读request.content_type
这些标题字段。
编辑:在这方面发现了更多可能有帮助的信息:https ://stackoverflow.com/a/1595453/624590
您不需要解析 content_type 字符串,Rails 已经为您完成了这项工作。只需检查:
request.format.symbol == :json
另一种写法:
request.format.json?
无需调用 #symbol,因为 equals 已重载:
request.format == :json
对我来说,检查传入请求是否为 json 的最佳方法是:
if request.content_type =~ /json/
request.format == '应用程序/json'
严重需要重点了解这里。参考。Rails 6.x with api only project
您必须确定为什么要 request.content_type 或 request.headers['Content-Type'] ?下面解释...
request.format OR request.headers['Accept'] 是客户端期望通过 API(服务或服务器)请求响应的格式。
request.content_type OR request.headers['Content-Type'] 是 API(服务或服务器)期望来自请求的数据格式。
因此,如果 API(服务或服务器)想要在 application/json 中请求数据,那么您使用 request.content_type 或 request.headers['Content-Type'] 是正确的