HTTP方法

根据 HTTP 标准,HTTP 请求可以使用多种请求方法。

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

HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。


POST:添加资源;一般将POST参数放在请求的body里面,请求应该返回新创建的资源以及可以获取该资源的唯一表示URI。

image-20220209154906581


GET:获取资源;不需要参数,通过类似 api/companies/{compayId} 的URI来表示资源中的一个公司,请求会返回请求路径所对应的资源。

image-20220209154937768

GET也可获取集合资源,带有查询/过滤条件,此时条件参数是资源地址?后面的部分,例如 api/companies?Name=Rick 请求会返回符合条件的资源。

image-20220209154957517


DELETE: 删除动作;不需要参数;通过URI来表示资源中的一个公司,无需返回信息。

image-20220209155024433


PATCH:更新局部信息火修改局部信息动作;参数会在请求的body中,通过URI;无需返回成功信息。

image-20220209155046334


PUT:替换信息;参数会放在请求的body里面,通过URI形式表示资源;可选情况:如果原本不存在则新建资源,此时返回新建的资源,如果原本存在,就进行替换操作,无需返回任何信息。

image-20220209155054466


综上所述:

image-20220209155115190

HTTP状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。

HTTP 状态码的英文为 HTTP Status Code

1xx

属于信息性的状态码,Web api 中不使用。

2xx

意味请求执行成功

  • 200 - OK 表示请求成功。
  • 201 - Created 请求成功并创建了资源。
  • 204 - No Content 请求成功但是不返回任何东西。

3xx

用于跳转,例如告诉搜索引擎某个页面的网址已经永久的改变了,Web Api 中不使用。

4xx

表示客户端错误

  • 400 - Bad request 表示api消费者发送到服务器的请求是有错误的。
  • 401 - Unauthorized 表示没有提供授权信息或者提供的授权信息不正确。
  • 403 - Forbidden 表示身份认证已经成功,但是已认证的用户无法访问请求的资源。
  • 404 - Not found 表示请求的资源不存在。
  • 405 - Method not allowed 当尝试发送请求到资源的时候当尝试发送请求到资源的时候,使用了不被支持的HTTP方法时,就会返回405状态码。
  • 406 - Not acceptable,这表示API消费者请求的表述格式并不被Web API所支持,并且API不会提供默认的表述格式。
  • 409 - Conflict,表示请求与服务器当前状态冲突。通常指更新资源时发生的冲突,例如,当你编辑某个资源的时候,该资源在服务器上又进行了更新,所以你编辑的资源版本和服务器的不一致。当然有时候也用来表示你想要创建的资源在服务器上已经存在了。它就是用来处理并发问题的状态码。
  • 415 - Unsupported media type,与406正好相反,有一些请求必须带着数据发往服务器,这些数据都属于特定的媒体类型,如果API不支持该媒体类型格式,415就会被返回。
  • 422 - Unprocessable entity,它是HTTP扩展协议的一部分。它说明服务器已经懂得了实体的Content Type,也就是说415状态码肯定不合适;此外,实体的语法也没有问题,所以400也不合适。但是服务器仍然无法处理这个实体数据,这时就可以返回422。所以它通常是用来表示语意上有错误,通常就表示实体验证的错误。

5xx

服务器错误:

500 - Internal server error,表示服务器出现了错误,客户端无能为力。

错误和故障的区分

错误

错误通常是由API的消费者引起的。API消费者请求时传递的数据是不合理的,这时API就会正常的将其拒绝。例如HTTP 4xx错误。

但这并不会影响API的可用性。即客户端方面的错误。

故障

故障是指:针对一个合理的请求,API无法返回它的响应。 换句话说就是API引起的问题。例如HTTP 5xx错误。

此时会对API整体的可用性造成影响。即服务器方面的故障。