HTTP 方法详解:GET、POST 和 PUT
HTTP 方法(GET、POST、PUT)用于客户端和服务器之间的通信。它们在输入、输出和传输内容上有显著区别。
1. GET 方法 – 获取资源
用途:从服务器获取资源。
输入:
请求行:GET /path HTTP/1.1
请求头:Host, User-Agent, Accept, Authorization 等。
查询参数:通过 URL 传递,格式为 ?key1=value1&key2=value2
输出:
响应行:HTTP/1.1 200 OK
响应头:Content-Type, Content-Length, Date 等。
响应体:请求的资源内容(例如 HTML、JSON、图像等)
传输内容:
URL 中的查询参数:GET /api/users?id=123 HTTP/1.1
示例:
GET /api/users?id=123 HTTP/1.1
Host: example.com
示例响应:
http
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 34
{
"id": 123,
"name": "John Doe"
}
2. POST 方法 – 提交数据, 创建新资源
用途:向服务器提交数据,通常用于创建新资源。
输入:
请求行:POST /path HTTP/1.1
请求头:Host, User-Agent, Content-Type, Authorization 等。
请求体:传递的数据(通常为 JSON、XML 或表单数据)
输出:
响应行:HTTP/1.1 201 Created 或其他状态码
响应头:Content-Type, Content-Length, Location 等。
响应体:通常为新创建资源的表示或状态信息
传输内容:
请求体中的数据:例如 JSON 格式
复制代码
{
"name": "Jane Doe",
"email": "jane@example.com"
}
示例:
复制代码
POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 45
{
"name": "Jane Doe",
"email": "jane@example.com"
}
示例响应:
复制代码
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 38
{
"id": 124,
"name": "Jane Doe"
}
3. PUT 方法 – 更新资源
用途:更新服务器上的资源,通常是完全替换资源。
输入:
请求行:PUT /path/resource-id HTTP/1.1
请求头:Host, User-Agent, Content-Type, Authorization 等。
请求体:传递的数据(通常为 JSON 格式)
输出:
响应行:HTTP/1.1 200 OK 或其他状态码
响应头:Content-Type, Content-Length 等。
响应体:通常为更新后的资源表示或状态信息
传输内容:
请求体中的数据:例如 JSON 格式
复制代码
{
"name": "Jane Doe Updated",
"email": "jane_updated@example.com"
}
示例:
PUT /api/users/124 HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 55
{
"name": "Jane Doe Updated",
"email": "jane_updated@example.com"
}
示例响应:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 55
{
"id": 124,
"name": "Jane Doe Updated",
"email": "jane_updated@example.com"
}
比较
GET:获取资源
输入:URL 路径和查询参数
输出:资源内容
传输内容:URL 中的参数
幂等性:幂等
POST:提交数据,创建资源
输入:URL 路径和请求体
输出:新资源的表示或状态信息
传输内容:请求体中的数据
幂等性:非幂等
PUT:更新资源
输入:URL 路径和请求体
输出:更新后的资源表示或状态信息
传输内容:请求体中的数据
幂等性:幂等
在 HTTP 协议中,不同方法的请求返回的数据类型取决于具体应用和 API 的设计。以下是 GET、POST 和 PUT 方法的请求返回数据类型的详细说明:
GET 方法
输入:
URL 路径和查询参数
输出:
数据类型:可以是 JSON、XML、HTML、纯文本、图像等。
响应头:
Content-Type: 指示返回数据的 MIME 类型(例如 application/json、text/html)。
Content-Length: 返回数据的长度。
其他常见的头部字段包括 Cache-Control、ETag、Last-Modified 等。
传输内容:
URL 中的参数
POST 方法
输入:
URL 路径和请求体
输出:
数据类型:通常是 JSON 或 XML,表示新创建的资源或操作状态。服务器也可以返回 HTML 或纯文本。
响应头:
Content-Type: 指示返回数据的 MIME 类型(例如 application/json、text/plain)。
Content-Length: 返回数据的长度。
Location: 新创建资源的 URL(如果适用)。
其他可能的头部字段包括 Set-Cookie、Cache-Control 等。
传输内容:
请求体中的数据
PUT 方法
输入:
URL 路径和请求体
输出:
数据类型:通常是 JSON 或 XML,表示更新后的资源。服务器也可以返回 HTML 或纯文本。
响应头:
Content-Type: 指示返回数据的 MIME 类型(例如 application/json、text/plain)。
Content-Length: 返回数据的长度。
其他可能的头部字段包括 ETag、Last-Modified 等。
传输内容:
请求体中的数据
返回数据类型详解
JSON(JavaScript Object Notation):
MIME 类型:application/json
轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。
示例:
{
"id": 123,
"name": "John Doe"
}
XML(eXtensible Markup Language):
MIME 类型:application/xml
标记语言,定义了一套规则编码文档,具有严格的格式和结构。
示例:
<user>
<id>123</id>
<name>John Doe</name>
</user>
HTML(HyperText Markup Language):
MIME 类型:text/html
标记语言,用于创建网页。
示例:
<html>
<body>
<h1>User Profile</h1>
<p>ID: 123</p>
<p>Name: John Doe</p>
</body>
</html>
纯文本(Plain Text):
MIME 类型:text/plain
简单的文本格式,没有特殊的标记或格式。
示例:
复制代码
ID: 123
Name: John Doe
图像(Images):
MIME 类型:例如 image/jpeg、image/png
示例:二进制数据(无法用普通文本表示)。