HTTP请求方法的有效负载

Ali*_*xel 68 rest http request payload http-method

HTTP上Wikipedia条目列出了以下HTTP请求方法:

  • HEAD:要求响应与对应于GET请求的响应相同,但没有响应主体.
  • GET:请求指定资源的表示.
  • POST:将要处理的数据(例如,从HTML表单)提交到标识的资源.数据包含在请求正文中.
  • PUT:上传指定资源的表示.
  • DELETE:删除指定的资源.
  • TRACE:回显收到的请求,以便客户端可以查看中间服务器所做的更改或添加(如果有).
  • 选项:返回服务器支持指定URL的HTTP方法.这可以通过请求'*'而不是特定资源来检查Web服务器的功能.
  • CONNECT:将请求连接转换为透明的TCP/IP隧道,通常是为了通过未加密的HTTP代理实现SSL加密通信(HTTPS).
  • 补丁:用于对资源应用部分修改.

我有兴趣了解(特别是关于前五种方法):

  • 哪些方法能够(应该?)接收有效载荷
    • 可以接收有效载荷的方法,它们如何接收?
      • 通过URL中的查询字符串?
      • 通过URL编码的身体?
      • 通过raw/chunked body?
      • 通过上述([全部/部分])的组合?

我很欣赏所有的输入,如果你能分享一些(最好是轻的)阅读,那也很棒!

Ali*_*xel 85

以下是RFC 7231的摘要,这是@Darrel链接的更新版本:

  • HEAD - 没有定义的正文语义.
  • GET - 没有定义的正文语义.
  • PUT - 支持身体.
  • POST - 支持身体.
  • DELETE - 没有定义的正文语义.
  • TRACE - 支持身体.
  • 选项 - 支持正文但在使用时没有语义(可能在将来).
  • CONNECT - 没有定义的正文语义

正如@John所提到的,所有请求方法都支持URL中的查询字符串(一个值得注意的例外可能是OPTIONS,如果URL是,在我的测试中似乎只是有用HOST/*).

我没有测试过CONNECTPATCH方法,因为我对它们没有兴趣.


Dar*_*ler 31

RFC 7231,HTTP 1.1语义和内容,是HTTP方法语义的最新和权威来源.此规范表明,对于可能包含在GET,HEAD,OPTIONS或CONNECT消息中的有效负载,没有明确的含义.第4.3.8节说客户端不得为TRACE请求发送正文.因此,只有TRACE不能有有效负载,但GET,HEAD,OPTIONS和CONNECT可能不会,并且如果客户端发送一个(意味着它可以忽略它),服务器不会知道如何处理它.

如果您认为任何事情都不明确,那么您可以通过邮件列表表达您的疑虑.