You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在K6 JavaScript中去除请求体的转义字符?

解决K6中从JSON文件读取请求体时的转义字符问题

问题本质

你看到的日志里的转义字符是正常现象,不是数据本身有问题。JSON.stringify()生成的字符串里的转义双引号是JSON语法要求的,k6控制台输出时会显示这些转义符,但实际发送给服务器的请求体是符合规范的,服务器能正确解析。

正确的代码写法

别把整个配置对象转成字符串,直接用解析后的对象里的requestBody发送POST请求就行,修改后的script.js如下:

// To perform testing
import http from 'k6/http'
import { open } from 'k6/fs';

const host = __ENV.HOST;
console.log(`Testing host = ${host}`);

// Ignore certificates
export const options = {
    insecureSkipTLSVerify: true
};

// 读取并解析API配置,直接保留对象格式(取第一个请求配置)
const apiConfig = JSON.parse(open('./APIs.json')).apiRequests[0]; 

// K6 Main function
export default function() {
    // 构造请求URL
    const url = `https://${host}${apiConfig.requestEndpoint}`;
    // 把请求头数组转成k6需要的对象格式
    const headers = {};
    apiConfig.requestHeaders.forEach(header => {
        const [key, value] = Object.entries(header)[0];
        // 替换Authorization里的占位符(如果有环境变量的话)
        headers[key] = value.replace('$ACCESS_TOKEN', __ENV.ACCESS_TOKEN || '');
    });

    // 发送POST请求,直接用requestBody转成JSON字符串
    const response = http.post(url, JSON.stringify(apiConfig.requestBody), { headers });
    console.log(`POST请求响应状态: ${response.status}`);
}

为什么日志里会有转义符?

当你用模板字符串console.log(Stringify = ${apiRequests})输出JSON字符串时,JavaScript会自动转义字符串里的双引号,这是为了让日志能正确显示完整的字符串内容——不然双引号会被当成字符串的结束标记。但这只是显示问题,实际发送的请求体没有额外的转义问题,服务器能正常解析。

你不需要刻意让日志里没有转义符,这完全不影响功能。

内容的提问来源于stack exchange,提问作者Reddy Rohit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 08:55:13