Skip to content

接口请求参数

接口请求参数

简介

接口参数是在进行网络通信或调用接口时传递给接口的数据,接口参数用于指定操作的详细信息、请求的内容、过滤条件或其他需要接口处理的信息,通过将参数传递给接口,可以控制接口的行为并获取相应的结果。

案例 https://ceshiren.com/search?expanded=true&q=requests

携带请求参数的方式

接口请求中携带的参数会在路径之后使用 ? 代表客户端向服务端传递的参数,可以使用 key=value 形式拼接在 URL 中,如果有多个参数的话,则使用 & 分隔。

常用两种方式:

  • 直接在 URL 中拼接:?username=Hogwarts&id=666
  • 通过 params 参数传递:requests.get(url, params)

携带请求参数的 GET 请求

# 导入依赖
import requests

def get_by_params():
    # 定义接口的 url 和拼接在 url 中的请求参数
    url = "https://httpbin.ceshiren.com/get"
    #定义变量params
    params ={
        "get_key": "get_value"
    }
    # 发出 GET 请求,r 接收接口响应
    r = requests.get(url, params=params)
    print(r.json())


def get_by_url():
    # 定义接口的 url 和拼接在 url 中的请求参数
    url = "https://httpbin.ceshiren.com/get?get_key=get_value"
    # 发出 GET 请求,r 接收接口响应
    r = requests.get(url)
    print(r.json())
get_by_params()
get_by_url()
#两种执行方式都是将参数直接赋值给url,在实战中,可根据接口的情况进行使用不同的方法

get 类型接口上传的 params 在响应中的位置。

携带params请求参数的 POST 请求

# 导入依赖
import requests

def post_by_params():
    # 定义接口的 url
    url = "https://httpbin.ceshiren.com/post"
    #定义变量params
    params = {
        "post_key": "post_value"
    }
    # 发出 POST 请求,r 接收接口响应
    r = requests.post(url, params=params)
    print(r.json())
post_by_params()
post 接口上传的 data 在响应中的位置。

携带请求参数的方式(Java)

常用两种方式(Java):

  • 方式一:直接拼接在 URL 中: - ?username=Hogwarts&id=666
  • 方式二:通过given()queryParam()传递: - queryParam():单个URL参数。 - queryParams():多个URL参数。

携带请求参数示例代码

package com.ceshiren.params;


import org.junit.jupiter.api.Test;

import java.util.HashMap;
import static io.restassured.RestAssured.given;
import static io.restassured.RestAssured.when;

/**
 * 测试参数处理的示例类,用于演示如何在REST Assured框架中处理HTTP请求的参数。
 */
public class TestParams {

    // 方法一
    /**
     * 直接将参数拼接到URL中的GET请求测试。
     * 这种方式适用于参数较少且简单的场景。
     */
    @Test
    void getURLReq() {
        when()
            .get("https://httpbin.ceshiren.com/get?name=ad&scholl=hogwarts")
            .then()
            .log().all();
    }

    // 方法二
    /**
     * 使用queryParam()方法传递参数的GET请求测试。
     * 这种方式可以动态地添加多个参数,更灵活。
     */
    @Test
    void queryGetParam() {
        given()
            .queryParam("name", "ad")
            .queryParam("scholl", "hogwarts")
            .when()
            .get("https://httpbin.ceshiren.com/get")
            .then()
            .log().all();
    }

    /**
     * 使用queryParams()方法批量传递参数的GET请求测试。
     * 通过HashMap构造参数,适用于参数较多或需要动态生成参数的情况。
     */
    @Test
    void getQueryParamsReq(){
        // 创建一个HashMap来存储请求参数
        HashMap<String, Object> query = new HashMap<>();
        query.put("name", "ad");
        query.put("school", "hogwarts");
        // 使用given().queryParams(query)来设置请求参数
        given().log().all()
            .queryParams(query)
            .when()
            .get("https://httpbin.ceshiren.com/get")
            .then()
            .log().all();
    }

    /**
     * 使用queryParams()方法批量传递参数的POST请求测试。
     * 同样使用HashMap来构造参数,适用于POST请求中的参数传递。
     */
    @Test
    void postQueryParamsReq(){
        // 创建一个HashMap来存储请求参数
        HashMap<String, Object> query = new HashMap<>();
        query.put("name", "ad");
        query.put("school", "hogwarts");
        // 使用given().queryParams(query)来设置请求参数
        given()
            .log().all()
            .queryParams(query)
            .when()
            .post("https://httpbin.ceshiren.com/post")
            .then()
            .log().all();
    }
}

总结

  • 请求参数拼接在URL中
  • 请求参数通过指定参数传递