幸运的星竹 2025-03-06 10:56 采纳率: 88.2%
浏览 20

postman的pre-script中调用pm.sendrequest()去给接口做前置

想利用pm.sendRequest()给接口做前置操作,但是总是取不到想要的值。

const postRequest = {
    url: 'http://api.yesapi.cn/api/App/User/LoginExt',
    method: 'POST',
    header: {"Content-Type": "application/json"},
    body:{
        mode: "raw",
        raw: JSON.stringify({"username":"lanxiannv","password":"245245", "app_key":"{{app_key}}"})
        }  //这里构建请求需要的设置
};
pm.sendRequest(postRequest, function(err,response){
    pm.globals.set("token", response.json()["data"]["token"]);
    pm.globals.set("uuid", response.json()["data"]["uuid"]);
});
console.log(pm.globals.get("token"));  //这里打印到控制台,显示的是null, 为什么返回不了值?
console.log(pm.globals.get("uuid"));
pm.request.body.formdata.remove("token");
pm.request.body.formdata.remove("uuid");
pm.variables.set("token", pm.globals.get("token"));
pm.request.body.formdata.add({key:"uuid", value: pm.globals.get("uuid")});

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-03-06 10:56
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    你遇到的问题可能是由于 pm.sendRequest() 在 Pre-request Script 中执行时,发送的请求还没有完成,因此无法获取想要的值。

    可以尝试使用 pm.sendRequest()async 版本,使用 await 关键字来等待请求完成:

    pm.sendRequest({
        url: 'http://api.yesapi.cn/api/Ap',
        method: 'POST',
        headers: {},
        body: {}
    }, (err, response) => {
        // 在这里可以获取请求的响应结果
        console.log(response.json());
    });
    

    或者,你可以使用 pm.request 方法来发送请求,然后使用 pm.response 对象来获取响应结果:

    pm.request({
        url: 'http://api.yesapi.cn/api/Ap',
        method: 'POST',
        headers: {},
        body: {}
    }, (err, response) => {
        // 在这里可以获取请求的响应结果
        console.log(pm.response.json());
    });
    

    在 Pre-request Script 中,使用 pm.sendRequest()pm.request 方法发送请求,然后在回调函数中获取响应结果。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月6日