【发布时间】:2011-08-19 08:36:59
【问题描述】:
我想知道为什么当我使用到使用 GET 方法的控制器的路由时,Rails 会剥离请求的主体。如果我将路由定义更改为 POST,则正文通过。
我正在尝试将 JSON 编码的选项哈希发送到 GET /customer/find,以便它返回客户列表。它没有改变任何东西,所以它不应该是一个 POST。
请有人解释我在这里缺少什么。
编辑:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html 详细说明 POST 请求不必创建某些内容,但如果确实如此,它应该返回 201。状态码 200(OK)、204(No Content)对于 POST 方法也有效。授予 aVenger 的问题是因为他对自己的回答发表了评论。
【问题讨论】:
-
请参阅此处,了解为什么在 GET 请求中包含正文是一个坏主意:stackoverflow.com/questions/978061/http-get-with-request-body
-
GET 像往常一样使用无正文。没有办法在请求中封装一些东西。
-
“它没有改变任何东西,所以它不应该是一个 POST”应该是“选项不影响发送的结果,所以它不应该是一个 POST”。如果您真的想使用 GET,请在查询字符串中传递参数,否则切换到 POST。
-
如果您只是检索有关资源的信息,您应该对选项哈希进行 url 编码并将其作为查询字符串传递给 GET 请求。 w3.org/Protocols/rfc2616/rfc2616-sec9.html
标签: ruby-on-rails ruby-on-rails-3 routing