Skip to content

接口请求头

接口请求头

简介

请求头是在 HTTP 请求消息中包含的元数据信息,用于描述请求或响应的一些属性和特征。

常见的头信息:

内容 含义
Authorization 表示客户端请求的身份验证信息
Cookie 表示客户端的状态信息,通常用于身份验证和会话管理
Content-Type 表示请求消息体的 MIME 类型
User-Agent 发送请求的客户端软件信息

头部信息获取

具体头部信息信息以下三个地方获取:

  1. 浏览器中右击选择检查或(F12)中的网络(英文 Network )获取

  1. Postman 运行接口,然后可以从 headers 中获取

  1. 接口文档获取(有的文档没有头部信息,就需要根据上面的方法进行获取)。

传入的头部信息不需要图中那么多,如果你不确定需要传递哪些头部信息,可以查看服务或 API 的文档。通常在服务的官方文档中会有明确说明需要传递的头部信息以及其用途。另外,你也可以尝试发送一个简单的请求并观察响应,看看是否缺少某些必要的头部信息。

请求头信息的使用场景

Authorization : 是指根据用户提供的身份凭证,生成权限实体,并为之授予相应的权限,比如我们调用一个接口,就需要我们登录接口返回的token去证明我们的身份。

Content-Type :用于定义网络文件的类型和网页的编码,决定文件接收方将以什么形式、什么编码读取这个文件。

练习

请求头信息使用 headers 参数传入,通常使用字典格式。

格式:header={"Content-Type":"需要传入的格式"}

import requests

def test_get():
    # 定义接口的 url
    url = "https://httpbin.ceshiren.com/get"
    headers = {'user-agent': 'my-app/0.0.1'}

    # 发出 GET 请求,r 接收接口响应
    r = requests.get(url, headers=headers)
    # 打印接口响应
    print(r.headers)  # 打印接口响应的头信息,即返回的响应头信息

test_get()

接口请求头构造(Java)

  • 直接使用参数。
  • 使用HashMap。

示例代码:

package com.ceshiren.headers;

import org.junit.jupiter.api.Test;
import java.util.HashMap;
import static io.restassured.RestAssured.given;

/**
 * 测试HTTP头部信息处理的示例类,用于演示如何在REST Assured框架中设置HTTP请求头。
 */
public class TestHeaders {

    /**
     * 使用headers()方法直接设置多个头部信息的GET请求测试。
     * 此方法允许一次性设置多个头部信息,每个头部信息以字符串对的形式给出。
     */
    @Test
    void header() {
        given()
            .headers("Authorization", "verifyMessage") // 设置Authorization头部
            .headers("name", "ad") // 设置name头部
            .log().all() // 打印所有请求头信息
            .when()
            .get("https://httpbin.ceshiren.com/get") // 发送GET请求
            .then()
            .log().all(); // 打印所有响应的详细信息
    }

    /**
     * 使用HashMap构造头部信息并传递给headers()方法的GET请求测试。
     * 这种方式适用于头部信息较多或需要动态生成头部信息的情况。
     */
    @Test
    void headerMap() {
        // 创建一个HashMap来存储头部信息
        HashMap<String, String> headerMap = new HashMap<>();
        headerMap.put("Authorization", "verifyMessage"); // 添加Authorization头部
        headerMap.put("name", "ad"); // 添加name头部
        headerMap.put("school", "hogwarts"); // 添加school头部
        given()
            .headers(headerMap) // 设置头部信息
            .log().all() // 打印所有请求头详细信息
            .when()
            .get("https://httpbin.ceshiren.com/get") // 发送GET请求
            .then()
            .log().all(); // 打印所有响应的详细信息
    }
}

总结

  • 头部信息获取
  • 请求头信息的使用场景
  • 构造头信息