我正在尝试创建一个使用Sinatra的路由,它只接受带有Content-type的POST:application / json但没有成功.
我的方法如下:
post '/dogs',:provides => :json do # returns here a json response end
用curl测试,我看到:provide => :json配置使用Content-Type:application / json响应的路由.
这是正确的,因为我还希望用POST请求的JSON消息进行响应,但我真的需要这条路由只响应具有Content-Type:application / json的POST请求,而不是响应其他人(例如Content-Type) :application / xml).
解决方法
请求不包含“Content-Type”标头,而是包含“Accept”. Sinatra基本上只响应包含“application / json”的“Accept”请求.只想确认一下:
post '/gods',:provides => :json do pass unless request.accept? 'application/json' ... end