1.HTTP方法
HTTP协议定义了几种请求方法(也成为“动作”或“动词”),每个方法代表了客户端与服务器交互的一种特定方式。
-
GET(获取资源):用于请求从服务器获取资源。例如,获取一个网页的内容、查询数据库中的记录等。GET请求不应在服务器上产生任何副作用,即它应该是幂等和安全的。
-
POST(创建资源):用于向服务器发送数据以创建新的资源。例如,提交表单数据,上传文件等。POST请求不是幂等的,意味着每次请求可能会有不同的结果。
-
PUT(更新资源):通过用于更新已存在的资源,也可以用于创建资源,但前提是服务器允许这么做。PUT请求时幂等的,多次执行相同的PUT请求将产生相同的结果。
-
PATCH(更新资源):用于对资源进行部分修改。与PUT不同的是,PATCH只需要包含需要更改的部分信息,而不是整个资源的信息。
-
DELETE(删除资源):用于请求服务器删除指定的资源。同样,DELETE请求也是幂等的。
2.状态码
HTTP状态码是由服务器返回给客户端的相应代码,用来指示请求处理的结果,他们被分为五类:
-
1xx(信息性):表示请求已被接收,继续处理。
-
100 Continue:客户端应继续其请求。这表明服务器已收到请求头并且客户端应继续发送请求体。
-
101 Switching Protocols:服务器理解了客户端的请求,并将通过升级协议的方式进行响应。
-
-
2xx(成功):表示请求已被成功接收、理解和接受。例如,
200 OK
表示请求成功。-
200 OK:标准的成功响应。服务器成功处理了请求,通常伴随着请求的数据或资源。
-
201 Created:请求成功且服务器创建了一个新的资源。通常在POST请求之后返回,指示新资源的URI。
-
204 No Content:请求成功处理,但没有返回任何内容。通常用于更新操作,客户端无需刷新页面。
-
-
3xx(重定向):为了完成请求,客户端需要进一步操作。例如,
302 Found
指示资源临时移动到了另一个位置。-
301 Moved Permanently:所请求的资源已经永久移动到新位置,并且将来对这个资源的引用都应该使用本响应返回的新的URI。
-
302 Found:与301类似,但它是临时性的重定向。客户端应该继续使用原URL来访问资源。
-
304 Not Modified:如果客户端执行的是条件GET请求,并且自上次请求以来资源未更改,则服务器返回此状态码,告知客户端可以使用本地缓存的版本。
-
-
4xx(客户端错误):请求包含语法错误或无法根据请求的内容完成。
-
400 Bad Request:服务器无法理解请求的格式,客户端应当修改请求后再试。
-
401 Unauthorized:当前请求需要用户验证。通常是由于缺少正确的认证凭证(如用户名和密码)。
-
403 Forbidden:服务器理解请求但拒绝执行。与401不同,授权不会有所帮助。
-
404 Not Found:服务器找不到对应于请求URI的任何东西。
-
429 Too Many Requests:用户在给定的时间内发送了太多请求。旨在防止滥用。
-
-
5xx(服务器错误):服务器在处理请求时遇到意外情况,未能完成请求。
-
500 Internal Server Error:通用错误消息,表示服务器遇到意外情况,阻止它完成请求。
-
501 Not Implemented:服务器不具备完成请求的功能。例如,服务器既不识别未知请求方法也不能提供对应的资源。
-
502 Bad Gateway:作为网关或代理角色的服务器从上游服务器收到了无效响应。
-
503 Service Unavailable:服务器暂时不可用(可能是过载或维护)。通常这是一个临时状态。
-
504 Gateway Timeout:作为网关或代理角色的服务器未能及时从上游服务器获得响应。
-
3.Headers
HTTP请求和响应中的Headers(头部)是非常重要的组成部分,他提供了关于请求或相应的原信息,通过Headers,客户端和服务器可以交换额外的信息,比如认证凭证、内容类型、缓存控制等。
Headers的基本结构
Headers是键值对(Key-Value Pair)形式存在的,每个HEaders占一行:
Headers-Namw: Headers-Value
例如:
Content-Type:application/json Authorization: Bearer your_token_here Accept: application/json
多个Headers之间用换行分隔
常见的Headers分类
根据用途不同,Headers可以分为以下几类:
1.通用头(General Headers)
适用于整个消息(请求或响应),但不作用于内容本身。
-
Cache-Contorl:指定缓存机制的行为
-
Connection:控制是否保持网络连接(如keep-alive)
-
Date:发送消息的时间戳
-
Via:中间代理服务器的信息
2.请求头(Request Headers)
仅用于请求中,提供客户端希望获取资源的方式或自身的信息
Headers名称 | 说明 |
---|---|
Host | 请求的目标主机名和端口号(必须) |
User-Agent | 客户端标识(浏览器、Postman等) |
Accept | 告诉服务器能接受的内容类型(如JSON、HTML) |
Accept-Language | 告诉服务器首选语言(如en-US) |
Authoeization | 认证信息(如Bearer Token、Basic Auth) |
Content-Type | 请求体的数据格式(如application/json) |
Content-Length | 请求体的大小(字节数) |
3.响应头(Response Headers)
仅用于响应中,提供服务器返回数据的附加信息
Headers名称 | 说明 |
---|---|
Server | 服务器软件名称 |
Set-Cookie | 设置Cookie共客户端存储 |
Content-Type | 返回内容的MIME类型(如text/html,applicetion/json) |
Content-Length | 返回内容的长度(字节) |
Location | 指示新创建资源的位置,常用于重定向(如302) |
WWW-Authenticate | 当返回401时,告知客户端需要哪种认证方式 |
4.实体头(Entity Headers)
描述实体主体(Body)的元信息,适用于请求和相应。
Header 名称 | 说明 |
---|---|
Content-Type | 数据类型(如 application/json ) |
Content-Length | 内容长度(字节) |
Content-Encoding | 内容编码方式(如 gzip) |
Last-Modified | 资源最后修改时间 |
Expires | 缓存过期时间 |
常用 Headers 示例
请求中常见 Headers:
GET /api/users HTTP/1.1
Host: example.com
User-Agent: PostmanRuntime/7.29.2
Accept: */*
Authorization: Bearer abc123xyz
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
响应中常见 Headers:
HTTP/1.1 200 OK
Date: Thu, 26 Jun 2025 02:48:00 GMT
Content-Type: application/json
Content-Length: 1234
Server: Apache
Set-Cookie: sessionid=abc123; Path=/
在 Postman 中如何设置 Headers
在 Postman 中,你可以手动添加、修改 Headers:
-
打开 Postman 请求窗口。
-
在请求方法(GET、POST 等)下方找到 Headers 标签。
-
添加 Key 和 Value,例如:
-
Key:
Content-Type
-
Value:
application/json
-
-
Postman 会自动帮你设置一些默认 Headers(如 User-Agent)。
注意:如果你在 Body 中选择了
raw
并选择 JSON 格式,Postman 会自动为你添加Content-Type: application/json
。
Headers 的常见用途
场景 | 使用的 Headers |
---|---|
发送 JSON 数据 | Content-Type: application/json |
接收 JSON 数据 | Accept: application/json |
用户认证 | Authorization: Bearer <token> 或 Authorization: Basic base64encode(username:password) |
文件上传 | Content-Type: multipart/form-data |
自定义请求来源 | X-Requested-With: XMLHttpRequest |
防止重复提交 | If-Match , If-None-Match |
控制缓存 | Cache-Control , ETag |
总结
类型 | 描述 | 常见 Header |
---|---|---|
通用头 | 整个请求/响应相关 | Cache-Control, Connection |
请求头 | 客户端向服务器发送的附加信息 | Accept, Authorization, Content-Type |
响应头 | 服务器返回的附加信息 | Server, Set-Cookie, Location |
实体头 | 关于实体内容的信息 | Content-Type, Content-Length |