如果响应正文中的 id 具有依赖性,如何使用预请求脚本在邮递员中设置 2 个集合变量?

Posted

技术标签:

【中文标题】如果响应正文中的 id 具有依赖性,如何使用预请求脚本在邮递员中设置 2 个集合变量?【英文标题】:How to set 2 collection variables in postman using pre-request script if the id's in the response body have dependency? 【发布时间】:2021-12-17 18:16:17 【问题描述】:

我正在尝试通过从响应正文中选择 id 来使用预请求脚本在邮递员中设置 2 个集合变量。 id 有两个,id 和 subId,只有当 id 链接到 subId 时,我才需要在集合变量中设置这两个 id。

需要从下面的 json 响应中获取 id 和 subId(可能有多个记录,其中 id 没有 subId 值)。请帮我解决这个问题。


    "result": [
        
            "id": 26,
            "name": "Testing",
            "code": "TST-012",
            "branches": [
                
                    "emailId": null,
                    "country": 
                        "shortName": "Niu",
                        "currency": "New Zealand Dollar"
                    
                
            ],

            "subId": [
            
                    "id": 46,
                    "name": "qa",
                    "code": "qa"
                
            ]
        ,
        
            "id": 27,
            "name": "Testing",
            "code": "TST-012",
            "branches": [
                
                  
                    "emailId": null,
                    "country": 
                        "shortName": "US",
                        "currency": "US Dollar"
                    
                
            ],

            "subId": null
        
    ]

【问题讨论】:

【参考方案1】:
    提取包含subIdid 不为空
const res = pm.response.json();

const matchEle = res.result.find(e => e.subId !== null);

pm.collectionVariables.set("id", matchEle.id); //26
    subId 中提取id
如果获取所有id
const subIds = _.map(matchEle.subId, _.property("id"));
pm.collectionVariables.set("subIds", JSON.stringify(subIds)); //[46]
如果只获取第一个 id
pm.collectionVariables.set("subId", matchEle.subId[0].id); //46

【讨论】:

感谢您的代码,它真的很有魅力。 @AvinashKunapareddy 请接受我的回答并投票(如果可以的话)

以上是关于如果响应正文中的 id 具有依赖性,如何使用预请求脚本在邮递员中设置 2 个集合变量?的主要内容,如果未能解决你的问题,请参考以下文章

来自具有特定“接受”标头的请求的错误响应正文格式

如何通过 Postman 预请求脚本设置请求正文?

Flutter:我应该如何访问此删除请求中的响应正文?

如何在 swagger 上分析请求(带有查询)并发送不同的响应正文?

使用 HttpRequestException 获取失败请求的响应正文

BigQuery 中的请求正文