如何使用Postman预请求脚本发送多个请求?

qyzbxkaa  于 2023-06-22  发布在  Postman
关注(0)|答案(2)|浏览(243)

在下面的 Postman 预请求脚本中,我需要在发出实际的 Postman 请求之前调用多个请求。
首先,它将调用会话API来检索会话id
在会话ID是成功的,然后我需要调用客户登录,使用户登录。
因此,我在我的postman prerequest脚本中做了以下更改,但客户登录请求中的LocalSessionId未定义。

const sessionRequestData = {
    url: "http://myurl.com/session",
    method: 'POST',
    header: { 'content-type': 'application/json' },
    body: {
        mode: 'raw',
        raw: JSON.stringify({
    "device": {
        "id": "web",
        "type": "WEB"
    }
    }
};

pm.sendRequest(sessionRequestData, function (err, res) {
   var jsonData = res.json();
    if (err) {
        console.log("mailman: error retrieving session id"+err);
    }
    else {
        console.log("mailman: retrieved session data succesfully"+ jsonData.session.id);
        pm.variables.set("LocalSessionId", jsonData.security.session.id);
       
    }
});

const customerSignonRequestData = {
    url: "http://myurl.com/CustomerSignOn",
    method: 'POST',
    header: { 'content-type': 'application/json' },
    body: {
        mode: 'raw',
        raw: JSON.stringify(  "customerRequest": {
        "identities": {
            "identity": [
                {
                    "data": "sessionId",
                    "value": `${pm.variables.get("LocalSessionId")}`
                }
            ]
        }
    });

 pm.sendRequest(customerSignonRequestData, function(err, res){
     console.log("customer sign on request "+ JSON.stringify(customerSignonRequestData.body.raw))
            var jsonData = res.json();
            if (err) {
       console.log("mailman: unable to signon"+err);
    } else {
        
console.log("mailman: login successful"+ JSON.stringify(jsonData))
    }
        });

有谁能建议我如何才能确保客户登录被调用后,只检索会话。

ckx4rj1h

ckx4rj1h1#

我有这个问题。诀窍是必须将第二个请求嵌套在第一个请求中。因此,它应该看起来像这样:

const sessionRequestData = {
   ...
};
pm.sendRequest(sessionRequestData, function (err, res) {
    ...
    const customerSignonRequestData = {
        ...
    };
    pm.sendRequest(customerSignonRequestData, function(err, res){
        ...
    });
});
46qrfjad

46qrfjad2#

我是这样做的:

pm.sendRequest({
    url: "http://myurl.com/session",
    method: 'POST',
    header: { 'content-type': 'application/json' },
    body: {
        mode: 'raw',
        raw: JSON.stringify({
            "device": {
                "id": "web",
                "type": "WEB"
            }
        })
    }
}, function (err, res) {
    if (err) {
        console.log("Error retrieving session id: " + err);
    } else {
        console.log("Retrieved session data successfully");
        const sessionId = res.json().session.id;
        pm.sendRequest({
            url: "http://myurl.com/CustomerSignOn",
            method: 'POST',
            header: { 'content-type': 'application/json' },
            body: {
                mode: 'raw',
                raw: JSON.stringify({
                    "customerRequest": {
                        "identities": {
                            "identity": [
                                {
                                    "data": "sessionId",
                                    "value": sessionId
                                }
                            ]
                        }
                    }
                })
            }
        }, function (err, res) {
            if (err) {
                console.log("Unable to signon: " + err);
            } else {
                console.log("Login successful: " + JSON.stringify(res.json()));
            }
        });
    }
});

相关问题