接口请求方法
接口请求方法
简介
接口请求方法是指在进行应用程序编程接口(API)通信时使用的 HTTP 方法。HTTP 方法定义了客户端与服务器之间进行通信的目的和操作类型。
常见的 HTTP 请求方法:
- GET(获取):用于从服务器获取资源。
- POST(提交):用于将数据提交到服务器,以创建新的资源。
- PUT(更新):用于更新服务器上的资源,或者创建新资源(如果不存在)。
- DELETE(删除):用于请求服务器删除指定的资源。
这些 HTTP 方法提供了在客户端和服务器之间进行通信的灵活性和标准化,使得开发人员能够根据不同的操作要求选择合适的方法。
常见 HTTP 请求方法构造
方法 | 说明 |
---|---|
requests.request() | 构造一个请求,支撑以下各方法的基础方法。 |
requests.get() | 构造 HTTP 协议中的 GET 请求。 |
requests.post() | 构造 HTTP 协议中的 POST 请求。 |
requests.put() | 构造 HTTP 协议中的 PUT 请求。 |
requests.delete() | 构造 HTTP 协议中的 DELETE 请求。 |
演练环境
- https://httpbin.ceshiren.com/
构造 GET 请求
格式:requests.get(url, params=None, **kwargs)
参数:
- url
: 接口的 URL。
- params
:拼接在 URL 中的请求参数。
- **kwargs
:更多底层支持的参数。
# 导入依赖
def get():
# 定义接口的 url
url = "https://httpbin.ceshiren.com/get"
# 发出 GET 请求,r 接收接口响应
r = requests.get(url)
# 打印接口响应
print(r.text) # 输出响应内容的字符串形式
#print(r.status_code) # 输出响应的状态码
get()
- 打印结果
构造 GET 请求 (Java)
package com.ceshiren.first;
: 指定代码所属的包。- 导入依赖: 导入
io.restassured.RestAssured
和org.junit.jupiter.api.Test
。 when().get("https://httpbin.ceshiren.com/get")
: 构造并发送GET
请求,"https://httpbin.ceshiren.com/get"
,为请求URL
。
package com.ceshiren.first;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.when;
public class TestMethod {
@Test
void getReq() {
when()
.get("https://httpbin.ceshiren.com/get")
.then()
.log().all();
}
}
- 请求结果
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 515
Connection: keep-alive
Date: Tue, 30 Jul 2024 02:39:04 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
server: CBS
{
"args": {
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip,deflate",
"Host": "httpbin.ceshiren.com",
"Sw8": "1-Y2EyNTUxM2MtZDIyYy00NWYzLThiMzQtYjFiNTg1NDg5ODYy-ZGFhMGE3NTctNGY0OS00NzA4LTg2MjItNjU5NGFjNDMwZjRm-1-QVBJU0lYLUJK-QVBJU0lYLUJK-L2dldA==-dXBzdHJlYW0gc2VydmljZQ==",
"User-Agent": "Apache-HttpClient/4.5.13 (Java/11.0.22)",
"X-Forwarded-Host": "httpbin.ceshiren.com"
},
"origin": "36.112.118.254, 182.92.156.22",
"url": "https://httpbin.ceshiren.com/get"
}
构造 POST 请求
格式:requests.post(url, data=None, json=None, **kwargs)
参数:
- url
: 接口的 URL。
- data
:表单格式请求体。
- json
:JSON 格式请求体。
- **kwargs
:更多底层支持的参数。
# 导入依赖
import requests
def post():
# 定义接口的 url
url = "https://httpbin.ceshiren.com/post"
# 发出 POST 请求,r 接收接口响应
r = requests.post(url)
# 打印接口响应
print(r.text) # 输出响应内容的字符串形式
#print(r.status_code) # 输出响应的状态码
post()
- 打印结果
构造 POST 请求(Java)
package com.ceshiren.first;
: 指定代码所属的包。- 导入依赖: 导入
io.restassured.RestAssured
和org.junit.jupiter.api.Test
。 when().post("https://httpbin.ceshiren.com/post")
: 构造并发送POST
请求,"https://httpbin.ceshiren.com/post"
,为请求URL
。
package com.ceshiren.first;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.when;
public class TestMethod {
@Test
void postReq() {
when()
.post("https://httpbin.ceshiren.com/post")
.then()
.log().all();
}
}
- 打印结果
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 685
Connection: keep-alive
Date: Tue, 30 Jul 2024 02:39:04 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
server: CBS
{
"args": {
},
"data": "",
"files": {
},
"form": {
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip,deflate",
"Content-Length": "0",
"Content-Type": "application/x-www-form-urlencoded; charset=ISO-8859-1",
"Host": "httpbin.ceshiren.com",
"Sw8": "1-ZjNkNzVlMmItNTk3Mi00NmU4LThiODQtOWE0MTZiZWU1NmY1-MjQzYjU2MTAtYWFiMC00NzEyLTgxZWQtNmE2MTc1ZTJiNTg5-1-QVBJU0lYLUJK-QVBJU0lYLUJK-L3Bvc3Q=-dXBzdHJlYW0gc2VydmljZQ==",
"User-Agent": "Apache-HttpClient/4.5.13 (Java/11.0.22)",
"X-Forwarded-Host": "httpbin.ceshiren.com"
},
"json": null,
"origin": "36.112.118.254, 182.92.156.22",
"url": "https://httpbin.ceshiren.com/post"
}
构造 PUT 请求
格式:requests.put(url, data=None, **kwargs)
参数:
- url
: 接口的 URL。
- data
:表单格式请求体。
- **kwargs
:更多底层支持的参数。
# 导入依赖
import requests
def put():
# 定义接口的 url
url = "https://httpbin.ceshiren.com/put"
# 发出 POST 请求,r 接收接口响应
r = requests.put(url)
# 打印接口响应
print(r.text) # 输出响应内容的字符串形式
#print(r.status_code) # 输出响应的状态码
put()
- 打印结果
构造 PUT 请求(Java)
package com.ceshiren.first;
: 指定代码所属的包。- 导入依赖:
io.restassured.RestAssured
org.junit.jupiter.api.Test
when().put("https://httpbin.ceshiren.com/put")
: 构造并发送PUT
请求,"https://httpbin.ceshiren.com/put"
,为请求URL
。
package com.ceshiren.first;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.when;
public class TestMethod {
@Test
void putReq() {
when()
.put("https://httpbin.ceshiren.com/put")
.then()
.log().all();
}
}
- 打印结果
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 606
Connection: keep-alive
Date: Tue, 30 Jul 2024 02:39:04 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
server: CBS
{
"args": {
},
"data": "",
"files": {
},
"form": {
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip,deflate",
"Content-Length": "0",
"Host": "httpbin.ceshiren.com",
"Sw8": "1-MmM5MzhjYzItOWVlMS00NWEwLTk5Y2UtYzk3YTg1ZGU3OTcz-ZmVhMzgxMWMtNmI5Yy00NTMyLThlMjktYjFkYzM2ZDRkNGVh-1-QVBJU0lYLUJK-QVBJU0lYLUJK-L3B1dA==-dXBzdHJlYW0gc2VydmljZQ==",
"User-Agent": "Apache-HttpClient/4.5.13 (Java/11.0.22)",
"X-Forwarded-Host": "httpbin.ceshiren.com"
},
"json": null,
"origin": "36.112.118.254, 182.92.156.22",
"url": "https://httpbin.ceshiren.com/put"
}
构造 DELETE 请求
格式:requests.delete(url, **kwargs)
参数:
- url
: 接口的 URL。
- **kwargs
:更多底层支持的参数。
# 导入依赖
import requests
def delete():
# 定义接口的 url
url = "https://httpbin.ceshiren.com/delete"
# 发出 POST 请求,r 接收接口响应
r = requests.delete(url)
# 打印接口响应
print(r.text) # 输出响应内容的字符串形式
#print(r.status_code) # 输出响应的状态码
delete()
- 打印结果
构造 DELETE 请求(Java)
package com.ceshiren.first;
: 指定代码所属的包。- 导入依赖: 导入
io.restassured.RestAssured
和org.junit.jupiter.api.Test
when().delete("https://httpbin.ceshiren.com/delete")
: 构造并发送DELETE
请求,"https://httpbin.ceshiren.com/delete"
,为请求URL
。
package com.ceshiren.first;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.when;
public class TestMethod {
@Test
void deleteReq() {
when()
.delete("https://httpbin.ceshiren.com/delete")
.then()
.log().all();
}
}
- 打印结果
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 585
Connection: keep-alive
Date: Tue, 30 Jul 2024 02:39:04 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
server: CBS
{
"args": {
},
"data": "",
"files": {
},
"form": {
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip,deflate",
"Host": "httpbin.ceshiren.com",
"Sw8": "1-MDZkZDA0ODUtNWE2Yy00OGRiLTkzZDMtZTRiMDkzNjQwZjkz-MmVmN2Y4NzEtMTQxOC00M2E4LWFlOTQtM2QzYWQyYzRjNjE5-1-QVBJU0lYLUJK-QVBJU0lYLUJK-L2RlbGV0ZQ==-dXBzdHJlYW0gc2VydmljZQ==",
"User-Agent": "Apache-HttpClient/4.5.13 (Java/11.0.22)",
"X-Forwarded-Host": "httpbin.ceshiren.com"
},
"json": null,
"origin": "36.112.118.254, 182.92.156.22",
"url": "https://httpbin.ceshiren.com/delete"
}
构造通用请求方法
格式:requests.request(method, url, **kwargs)
参数:
-
method
: 请求方法。GET
,OPTIONS
,HEAD
,POST
,PUT
,PATCH
,DELETE
。
url
: 接口的 URL。
**kwargs
:更多底层支持的参数。
def request(method, url, kwargs):
"""Constructs and sends a :class:`Request <Request>`.
:param method: method for the new :class:`Request` object: ``GET``, ``OPTIONS``, ``HEAD``, ``POST``, ``PUT``, ``PATCH``, or ``DELETE``.
:param url: URL for the new :class:`Request` object.
:param params: (optional) Dictionary, list of tuples or bytes to send
in the query string for the :class:`Request`.
:param data: (optional) Dictionary, list of tuples, bytes, or file-like
object to send in the body of the :class:`Request`.
:param json: (optional) A JSON serializable Python object to send in the body of the :class:`Request`.
:param headers: (optional) Dictionary of HTTP Headers to send with the :class:`Request`.
:param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`.
:param files: (optional) Dictionary of ``'name': file-like-objects`` (or ``{'name': file-tuple}``) for multipart encoding upload.
``file-tuple`` can be a 2-tuple ``('filename', fileobj)``, 3-tuple ``('filename', fileobj, 'content_type')``
or a 4-tuple ``('filename', fileobj, 'content_type', custom_headers)``, where ``'content-type'`` is a string
defining the content type of the given file and ``custom_headers`` a dict-like object containing additional headers
to add for the file.
:param auth: (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth.
:param timeout: (optional) How many seconds to wait for the server to send data
before giving up, as a float, or a :ref:`(connect timeout, read
timeout) <timeouts>` tuple.
:type timeout: float or tuple
:param allow_redirects: (optional) Boolean. Enable/disable GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD redirection. Defaults to ``True``.
:type allow_redirects: bool
:param proxies: (optional) Dictionary mapping protocol to the URL of the proxy.
:param verify: (optional) Either a boolean, in which case it controls whether we verify
the server's TLS certificate, or a string, in which case it must be a path
to a CA bundle to use. Defaults to ``True``.
:param stream: (optional) if ``False``, the response content will be immediately downloaded.
:param cert: (optional) if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair.
:return: :class:`Response <Response>` object
:rtype: requests.Response
底层参数说明
参数 | 应用场景 |
---|---|
method | 请求方法 |
url | 请求 URL |
params | 请求中携带 URL 参数 |
data | 请求中携带请求体(默认为表单请求) |
json | 请求中携带 json 格式的请求体 |
headers | 请求中携带头信息 |
cookies | 请求中携带 cookies |
files | 请求中携带文件格式的请求体 |
auth | 请求中携带认证信息 |
timeout | 设置请求超时时间 |
allow_redirects | 请求是否允许重定向 |
proxies | 设置请求代理 |
verify | 请求是否要认证 |
cert | 请求中携带 ssl 证书 |
总结
- 构造 GET 请求
- 构造 POST 请求
- 构造 PUT 请求
- 构造 DELETE 请求
- 构造通用请求方法
- 底层参数说明