首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PUT和POST请求是否需要/期望具有请求主体?

PUT和POST请求是否需要/期望具有请求主体?
EN

Stack Overflow用户
提问于 2011-09-07 01:45:12
回答 5查看 37.8K关注 0票数 30

我正在编写一个RESTful应用程序接口,我正在考虑用户创建密钥的过程。我有以下几种可能性:

  • /new/<keyname>的GET请求-尽管它非常简单,但我想我不会使用它,因为我听说GET用于检索和/或列出对/<keyname>的请求-这对我来说似乎很简单,但不会在请求体中传递任何数据。我可以这样做吗?这是不是很奇怪?
    • /keys的POST请求传入了请求体"keyname=SomeKey" -这是正确的方式吗?

我研究了一下this API from joyent,在他们所有的PUT和POST请求中,他们都会在请求体中传递一些数据。这是意料之中的吗?在PUT和POST请求中不需要请求体真的是错误的吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-07 05:57:37

我在Http-WG上问了这个问题。这是我得到的最准确的答案,http://lists.w3.org/Archives/Public/ietf-http-wg/2010JulSep/0276.html

总之,POST不需要正文。我希望同样的理由也可以应用于PUT。

票数 24
EN

Stack Overflow用户

发布于 2019-07-09 10:59:23

这不是必需的。您可以发送不带body的POST/PUT请求,而使用查询字符串参数。但是要注意,如果参数包含无效的HTTP字符,则必须对其进行编码。

例如,如果你需要发布'hello world‘到and end point,你必须让它看起来像这样:http://api.com?param=hello%20world

票数 1
EN

Stack Overflow用户

发布于 2011-09-07 01:50:25

也许最好的方法是你的第三个选择:使用keyname=SomeKey发布到/keys

原因如下:您可能希望向您的API添加另一个函数,例如create_new_user。因此,很难区分试图发布名为create_new_user的密钥的用户和试图使用create_new_user函数的用户之间的区别。

您说得对,您不应该使用GET作为GET操作"SHOULD NOT have the significance of taking an action other than retrieval." (RFC 2616)来执行此操作。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7323958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档