HTTP请求中常见的传参方式
常见的传参方式
-
URL 查询字符串(适用于 GET 请求)
示例参考GET 请求中的传参方式 -
请求体(适用于 POST、PUT、PATCH 请求)
描述: 参数可以通过请求体传递,常用于提交复杂数据结构,如 JSON 或表单数据。
常用格式:
application/json: 用于发送 JSON 数据。
application/x-www-form-urlencoded: 用于发送表单数据,数据以 key=value 的形式编码。
示例参考POST 请求中的传参方式 -
请求头
描述: 参数可以通过请求头传递,通常用于身份验证、内容类型等信息。
GET /api/resource HTTP/1.1 Authorization: Bearer your_token
-
路径参数(适用于 RESTful API)
描述: 在 URL 路径中嵌入参数,通常用于标识资源。
请求资源:请求 ID 为 123 的用户的详细信息 GET /api/resource/123 HTTP/1.1 这里的 `123` 是资源 ID 更新资源:更新 ID 为 123 的用户的信息 PUT /api/users/123 HTTP/1.1 Content-Type: application/json { "name": "John Doe", "email": "john@example.com" }
-
Cookies
描述: 参数也可以通过 Cookies 传递,通常用于会话管理。
GET /api/resource HTTP/1.1 Cookie: sessionId=abc123
-
其他自定义方式
描述: 有些应用可能会定义特定的参数传递方式,例如在 URL 的片段(# 后)中传递参数,通常不被服务器处理,但可以在客户端使用。
GET /api/resource#key1=value1 HTTP/1.1
POST 请求
在 HTTP 中,POST 请求用于向服务器发送数据,通常用于提交表单或上传文件。请求参数可以通过不同的方式传递,具体取决于上下文和内容类型
常见的请求参数传递方式
-
表单数据(application/x-www-form-urlencoded)
这是最常见的方式,参数以键值对的形式传递,使用 & 符号分隔。
POST /submit HTTP/1.1 Host: www.example.com Content-Type: application/x-www-form-urlencoded username=johndoe&password=secret
-
JSON 数据(application/json)
在一些 API 中,特别是 RESTful API,常常使用 JSON 格式传递请求参数。
POST /api/user HTTP/1.1 Host: www.example.com Content-Type: application/json { "username": "johndoe", "password": "secret" }
如果要传多层级json 内容
POST /api/user HTTP/1.1 Host: www.example.com Content-Type: application/json { "username": {"name1": {"name2": "value"}}, "password": "secret" }
-
Multipart 表单数据(multipart/form-data)
这种方式通常用于文件上传,允许在同一请求中发送文件和其他字段。POST /upload HTTP/1.1 Host: www.example.com Content-Type: multipart/form-data; boundary=---011000010111000001101001 -----011000010111000001101001 Content-Disposition: form-data; name="username" johndoe -----011000010111000001101001 Content-Disposition: form-data; name="file"; filename="example.txt" Content-Type: text/plain [文件内容] -----011000010111000001101001--
-
URL 查询参数
尽管不常用于 POST 请求,但你仍然可以在 URL 中附加查询参数。
POST /submit?ref=homepage HTTP/1.1 Host: www.example.com Content-Type: application/x-www-form-urlencoded username=johndoe&password=secret
GET 请求
传参方式和特殊字符处理
在 GET 请求中,参数通常通过 URL 查询字符串传递。
-
基本格式
GET 请求的基本格式
GET /path?key1=value1&key2=value2 HTTP/1.1 Host: www.example.com
-
多个参数
可以在查询字符串中传递多个参数,每个参数之间用 & 符隔。
GET /api/user?name=john&age=30&name2=john2 HTTP/1.1 Host: www.example.com
-
带有特殊字符的参数
在参数值中使用特殊字符时,必须进行 URL 编码。例如,空格编码为 %20 或 +。
GET /path/search?query=python%20 HTTP/1.1 Host: www.example.com
-
URL 查询参数的长度限制
需要注意的是,GET 请求的查询字符串长度是有限制的,具体限制取决于浏览器和服务器。通常建议将 GET 请求用于不超过 2000 个字符的查询字符串。