HTTP协议的8种请求方式及常用请求方式的解析

前言

 今天想起来写这一篇文章,主要是无意中想起来当初面试的时候我的以为面试官曾问过我这个问题,因此我对此整理一下,希望对大家有所帮助。

简单介绍

TTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范。HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口是动态分配的。当我们没有指定端口访问时,浏览器会默认帮我们添加80端口。我们也可以自己指定访问端口如:http://www.ip138.com:80。 需要注意的是,现在大多数访问都使用了HTTPS协议,而HTTPS的默认端口为443,如果使用80端口访问HTTPS协议的服务器可能会被拒绝。

HTTP请求的方法:

HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法

1、OPTIONS

返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性

2、HEAD

向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。

3、GET

向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url

4、POST

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form

5、PUT

向指定资源位置上传其最新内容

6、DELETE

请求服务器删除Request-URL所标识的资源

7、TRACE

回显服务器收到的请求,主要用于测试或诊断

8、CONNECT

HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

注意:

1)方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not Implemented)。

2)HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法。

在 Web 服务的开发中,HTTP 协议是最常使用的协议。其中,常见的 HTTP 请求方式有四种:POSTGETDELETE 和 PUT

1. HTTP 请求方式

HTTP(Hypertext Transfer Protocol)是一种在计算机网络中用于传输超媒体文档的应用层协议。HTTP 协议定义了客户端和服务器之间的通信规则,并规定了客户端向服务器发送请求时需要采用的请求方法(请求方式)。

常见的 HTTP 请求方式有四种:

  • POST(添加)
  • GET(查询)
  • DELETE(删除)
  • PUT(修改)

下面将分别对这四种请求方式进行详细介绍。

2. POST 请求

POST 请求用于向指定资源提交数据,通常会导致服务器端的状态发生变化。例如,在 Web 表单中填写用户信息并提交时,就是使用 POST 请求方式将表单数据提交到服务器存储。

使用 POST 请求方式提交的数据会被包含在请求体中,而不像 GET 请求方式那样包含在 URL 中。因此,POST 请求可以提交比 GET 更大的数据量,并且相对更安全。

2.1. 例子

下面是一个 POST 请求的例子:

 
POST /api/user HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 123

{
   "name": "John Doe",
   "email": "johndoe@example.com",
   "age": 30
}

上述代码表示向 example.com/api/user 资源发送一个 POST 请求,请求体中包含了一个 JSON 格式的用户信息。

2.2. 优缺点

POST 请求的优点包括:

  • 可以提交比 GET 更大的数据量。
  • 相对更安全,因为请求参数不会被包含在 URL 中。

POST 请求的缺点包括:

  • 对服务器性能的影响较大。
  • 不适用于对同一资源进行多次操作。

2.3. 应用场景

  • 向服务器提交表单数据。
  • 向服务器上传文件。
  • 创建资源或提交数据到服务器。

3. GET 请求

GET 请求用于向指定资源发出请求,请求中包含了资源的 URL 和请求参数。服务器端通过解析请求参数来返回相应的资源,不会修改服务器端的状态。

使用 GET 请求方式提交的数据会被包含在 URL 中,因此易于被缓存和浏览器保存,但也因此不适合用于提交敏感数据。

3.1. 例子

下面是一个 GET 请求的例子:

GET /api/user?id=123 HTTP/1.1
Host: example.com

上述代码表示向 example.com/api/user 资源发送一个 GET 请求,请求参数中包含了用户的 ID。

3.2. 优缺点

GET 请求的优点包括:

  • 可以被缓存和浏览器保存。
  • 对服务器性能的影响较小。

GET 请求的缺点包括:

  • 不适合用于提交敏感数据。
  • 仅适用于对资源进行查询操作,不能修改服务器端的状态。

3.3. 应用场景

  • 获取资源信息。
  • 对资源进行查询操作。

4. DELETE 请求

DELETE 请求用于请求服务器删除指定的资源,可以理解为对服务器上的资源进行删除操作。使用 DELETE 方式请求会导致指定的资源被永久删除,因此需要谨慎使用。

4.1. 例子

下面是一个 DELETE 请求的例子:

 
DELETE /api/user?id=123 HTTP/1.1
Host: example.com

上述代码表示向 example.com/api/user 资源发送一个 DELETE 请求,并指定要删除的用户的 ID。

4.2. 优缺点

DELETE 请求的优点包括:

  • 可以永久删除指定的资源。

DELETE 请求的缺点包括:

  • 对服务器性能的影响较大。
  • 不适用于对同一资源进行多次操作。

4.3. 应用场景

  • 删除指定的资源。
  • 按照条件删除一组资源。

5. PUT 请求

PUT 请求用于向服务器更新指定资源,可以理解为对服务器上的资源进行修改操作。使用 PUT 请求方式会覆盖原有的资源内容,因此需要谨慎使用。

5.1. 例子

下面是一个 PUT 请求的例子:

PUT /api/user HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 123

{
   "id": 123,
   "name": "John Doe",
   "email": "johndoe@example.com",
   "age": 30
}

上述代码表示向 example.com/api/user 资源发送一个 PUT 请求,并指定要更新的用户信息。

5.2. 优缺点

PUT 请求的优点包括:

  • 可以更新指定的资源。

PUT 请求的缺点包括:

  • 对服务器性能的影响较大。
  • 不适用于对同一资源进行多次操作。

5.3. 应用场景

  • 更新指定的资源。
  • 按照条件更新一组资源。

6. 总结

本文详细介绍了 HTTP 中常见的四种请求方式:POSTGETDELETEPUT。这四种请求方式各有优缺点,需要根据具体的应用场景选择使用。熟练掌握这些请求方式有助于我们在 Web 服务的开发中更加便捷和高效地实现各种功能。

  • 36
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PHP 发送 HTTP 请求有多方式,以下是其中几常见的方法: 1. 使用内置函数:PHP 提供了一些内置函数,如 `file_get_contents()`、`fopen()`、`curl` 等,可以发送 HTTP 请求。其中,`file_get_contents()` 函数可以用来发送简单的 GET 请求,`fopen()` 可以发送 GET 和 POST 请求,而 `curl` 是一个功能强大、灵活的库,可以发送各类型的 HTTP 请求。 示例使用 `file_get_contents()` 发送 GET 请求: ```php $response = file_get_contents('http://example.com'); ``` 示例使用 `fopen()` 发送 POST 请求: ```php $data = array('key1' => 'value1', 'key2' => 'value2'); $options = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => http_build_query($data), ), ); $context = stream_context_create($options); $response = file_get_contents('http://example.com', false, $context); ``` 2. 使用第三方库:除了使用内置函数外,还可以使用一些第三方库来发送 HTTP 请求,如 Guzzle、Requests 等。这些库提供了更丰富的功能和更友好的接口,可以简化发送请求的过程。 示例使用 Guzzle 发送 GET 请求: ```php use GuzzleHttp\Client; $client = new Client(); $response = $client->get('http://example.com'); ``` 示例使用 Requests 发送 POST 请求: ```php use \Httpful\Request; $data = array('key1' => 'value1', 'key2' => 'value2'); $response = Request::post('http://example.com') ->sendsJson() ->body(json_encode($data)) ->send(); ``` 这些只是一些常见的方法,根据实际需求和情况,可以选择适合的方式来发送 HTTP 请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子伟-H5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值