Skip to content

接口请求方法

接口请求方法

简介

接口请求方法是指在进行应用程序编程接口(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 请求。

uml diagram

演练环境

  • 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.RestAssuredorg.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.RestAssuredorg.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.RestAssuredorg.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: 请求方法。

    • GETOPTIONSHEADPOSTPUTPATCHDELETE
  • 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 请求
  • 构造通用请求方法
  • 底层参数说明