HTTP请求方法

HTTP方法是启动请求字符串中的必需参数。一种方法可以称为请求类型,并且基于此类型,必须在服务器上执行某些操作并将响应返回给客户端。该方法的名称区分大小写,并且通常是一个简短的单词,由英文大写字母组成。

接收请求时,服务器尝试确定请求的方法,如果失败,则返回带有代码501和短语的响应消息Not Implemented。如果服务器已定义方法,但是无法将其应用于请求的资源,则返回带有代码405和短语的响应消息Method Not Allowed了解有关HTTP响应状态代码的更多信息。如果出现这两个选项中的任何一个,则服务器需要在返回响应时添加标头Allow 并列出服务器支持的所有方法。

尽管没有强制性方法,但是为了不浪费每个服务器的资源,建议使用HTTP规范中内置的方法。

OPTIONS

定义Web服务器使用的功能和方法。响应消息必须包含一个标头,Allow 列出服务器支持的所有方法。

请求示例:

OPTIONS * HTTP/1.1
Host: example.com

响应示例:

HTTP/1.1 200 OK
Allow: OPTIONS, GET, HEAD, POST, PUT, PATCH, DELETE, TRACE

它可以用来“ ping”服务器,因为不应缓存执行结果。

GET

请求特定资源的内容,接收数据,并且不应以任何方式修改此数据。

请求示例:

GET /text.txt HTTP/1.1
Host: example.com

响应示例:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8

Title: Заголовок файла
Text: Текст файла

不太常用来启动各种过程,并且应在响应消息的主体中包括进度信息。

HEAD

与GET类似,但不返回响应主体,仅返回起始行和标头。用于检索元数据以及验证和验证资源。

请求示例:

HEAD /text.txt HTTP/1.1
Host: example.com

响应示例:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8

可以缓存响应消息头。如果资源的元数据与缓存中的信息不匹配,则必须将资源的副本标记为过期。

POST

根据请求中传递的数据创建新资源。

请求示例:

POST /text.txt HTTP/1.1
Host: example.com

Title=Заголовок+файла
Text=Текст+файла

如果创建了资源(在这种情况下为file text.txt),则应返回响应消息,并带有状态码201 CreatedLocation指向该资源的标头。

HTTP/1.1 201 Created
Location: /text.txt

如果URI尚未更改,但是已创建数据,则服务器应200 OK在消息正文中返回带有状态码和信息以及请求结果的响应。

HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8

Добавлен контент в пустой файл «text.txt»

它通常用于将网站上用户填写的HTML表单中的数据发送到服务器。

PUT

在指定的URI处修改请求的内容。

PUT /text.txt HTTP/1.1
Host: example.com

Title=Новый+заголовок+файла
Text=Новый+текст+файла

如果资源已更改,则返回带有状态代码200 OK或的响应消息204 No Content

HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8

Изменен контент в файле «text.txt»

如果URI中指定的资源不存在,则服务器将创建该资源并返回带有状态码的响应201 Created

HTTP/1.1 201 Created
Content-Type: text/plain; charset=UTF-8

Изменен контент в файле «text.txt»

POST和PUT在资源URI的用途方面有所不同。通过使用PUT,假定正在加载的内容与指定URI上的资源匹配。使用POST,假定将以指定的URI处理上载的内容。

PATCH

与PUT类似,但仅适用于资源块。

请求示例:

PATCH /text.txt HTTP/1.1
Host: example.com

Title=Новый+заголовок+файла

响应示例:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8

Изменен заголовок в файле «text.txt»

因此,它只是更改了Title,但Text保持不变。

DELETE

删除指定URI处的特定资源。

请求示例:

DELETE /text.txt HTTP/1.1
Host: example.com

响应示例:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8

Файл «text.txt» удален

如果资源已删除,则返回带有状态码200 OK或的响应204 No Content

TRACE

返回有关哪些数据代理在请求中添加或更改的服务调试信息。

请求示例:

TRACE / HTTP/1.1
Host: example.com

响应示例:

HTTP/1.1 200 OK
Content-Type: message/http

TRACE / HTTP/1.1
Host: example.com

请求的最终接收者是发起服务器,并且从请求服务器返回有关请求的信息。如果需要从特定的代理服务器更早返回,则需要将标头设置Max-Forwards为所需的值。

CONNECT

与请求的资源开始双向通信。该方法通常用于打开透明的TCP / IP隧道。

CONNECT server.example.com:80 HTTP/1.1 
Host: server.example.com:80

通常用于访问使用SSL(HTTPS)的网站。为了创建TCP / IP隧道,客户端请求一个代理服务器,该代理服务器又充当客户端,连接到源服务器。连接到原始服务器后,代理服务器代理往返于客户端的TCP流。

安全,等幂和非等幂方法

以上所有方法可以分为三类:

  • 安全(GETHEADOPTIONS) -不改变数据,它们可以以任何顺序进行;
  • 幂等(GETHEADPUTDELETEOPTIONSTRACE) -由相同的重复执行将被预期;
  • 非幂等(POSTPATCH)-重复时,结果将有所不同,例如,如果您发送POST请求以连续创建一个元素多次,则它可以使用相同的数据创建多个元素。

如果由于某种原因,HTTP规范中的内置方法不够用,则可以使用自己的自定义方法。为此,服务器需要了解它们的存在并了解如何使用这些方法处理请求。

via https://devanych.ru/technologies/metody-http-zaprosa

HTTP请求方法
标签: