jfc*_*lvo 7 ruby json content-type routes sinatra
我正在尝试用Sinatra创建一条只接受POST Content-type: application/json但没有成功的路线.
我的方法如下:
post '/dogs', :provides => :json do
# returns here a json response
end
Run Code Online (Sandbox Code Playgroud)
用curl测试,我已经看到:provides => :json配置路由以响应Content-Type: application/json.
这是正确的,因为我还希望用POST消息的JSON消息进行响应,但我真的需要这条路由只响应一个Content-Type: application/json而不是其他人(例如Content-Type: application/xml)的POST请求.
在Sinatra有什么方法可以限制路由只接受某个请求Content-Type吗?
phi*_*kov 12
请求不包含"Content-Type"标头,而是包含"Accept".Sinatra基本上只应该响应包含"application/json"的"Accept"的请求.只想确认一下:
post '/gods', :provides => :json do
pass unless request.accept? 'application/json'
...
end
Run Code Online (Sandbox Code Playgroud)
小智 10
读这个
http://rack.rubyforge.org/doc/classes/Rack/Request.html
request.content_type 会告诉你的
Phil对于RFC可能是对的,但实际上很多事情都是在POST请求中放入内容类型,因此知道它是什么很有用.