为什么我在POST请求JSON时得到405?

时间:2012-07-04 17:37:46

标签: ruby sinatra padrino http-status-code-405

所以我有一个带有控制器的Padrino应用程序看起来大致相同(简化为简洁):

App.controllers :questions do
  get :index, :with => :id, :provides => [:html, :json] do
    # Stuff
  end

  post :index, :with => :id, :provides => [:html, :json] do
    # Other stuff
  end
end

如果我在浏览器中点击“questions / 1”,我会看到给定问题的HTML页面。如果我点击“questions / 1.json”,我会看到问题的JSON表示。完全像我期望的那样。

现在,如果我通过网络表单向“questions / 1”提交POST请求,它就可以了。但是,如果我尝试向“questions / 1.json”发送POST请求(表示我希望JSON格式的响应 - 或者至少是我思考它的工作方式),我得到了405方法不允许。

我猜这里有一些我基本误解的东西。我错过了什么?更重要的是,应该如何我定义接受POST请求的路由并提供HTML或JSON响应?

1 个答案:

答案 0 :(得分:1)

好吧,我不确定为什么会这样;但是现在我通过在我的POST请求中将“ACCEPT”标题设置为“application / json”而不是将“.json”添加到URL的末尾来解决问题(并且在我的有限的互联网研究中,这可能是无论如何都是首选方法。)