参数传递
在我们的业务场景中, 发布话题成功之后会生成1个具体的topic_id
回复话题的时候 需要用到这个topic_id
现在的问题是 这个topic_id 是动态生成的。每次做测试的时候,都需要手动去从上一个接口中将最新的 topic_id 值复制过来。
能不能将这个id 动态引用 ?,每次当这个id有最新的值的时候,下游的接口都能自动获取到最新值。
答案是肯定可以的。
上游接口中设置变量
上面我们讲过可以手动去添加变量,适合的场景是 这些值都是固定的,可以直接手动设置
- 在上游接口中 找到 【Tests】 面板
- 在上游的Tests 面板中编写代码 (在上游的接口中设置变量) ```javascript // 1. 使用代码的方式获取到 服务器返回的结果。 data 就表示服务器返回的整个json数据 var data = pm.response.json()
// 2. 从服务器返回的结果中 提取 自己需要的值, 设置为全局变量 // “topicid” 变量的名字,data[“topic_id”] 实际运行结果中的值 pm.globals.set(“topicid”,data[“topic_id”])
![image.png](https://cdn.nlark.com/yuque/0/2021/png/87080/1625983441554-7ccf08ee-cf85-4de3-9e1e-abc4a9766036.png#clientId=uf4a02469-9f75-4&from=paste&height=426&id=uc710e2a2&margin=%5Bobject%20Object%5D&name=image.png&originHeight=851&originWidth=1736&originalType=binary&ratio=1&size=176675&status=done&style=none&taskId=u2df0b294-ddf5-40bb-aa4e-a0ed18ddef3&width=868)
<a name="YYAqa"></a>
## 练习
将回复话题中的 reply_id 的值 设置为变量。 变量名为 replyid<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/87080/1625984338689-c9ca90ae-647e-477f-99ee-b338125ad8aa.png#clientId=uf4a02469-9f75-4&from=paste&height=383&id=ua842e85f&margin=%5Bobject%20Object%5D&name=image.png&originHeight=766&originWidth=1655&originalType=binary&ratio=1&size=130062&status=done&style=none&taskId=u59ca1acb-b5e0-466c-b6aa-358f0c1cca7&width=827.5)
```javascript
var data = pm.response.json()
pm.globals.set("replyid",data["reply_id"])
将未读消息中的id值设置为变量
// 1. 获取整个服务器返回的结果
var data = pm.response.json()
// 2. 获取要取得值 取值的时候,从最外层开始取,如果结果中有 [],要加索引值,索引从0开始
pm.globals.set("replyid",data["data"]["hasnot_read_messages"][0]["id"])
设置成功。
- 先发布话题 (发布话题就是上游接口)
在上游接口中 设置变量
var data = pm.response.json()
pm.globals.set("topicid",data["topic_id"])
- 在下游接口中使用变量
输入请求参数
{
"accesstoken":"{{token1}}",
"topic_id":"{{topicid}}",
"title":"nba明天第三场开打",
"tab":"share",
"content":"太阳总冠军,保罗总冠军"
}
postman中内置的变量
我们可以根据自己的需要创建变量,postman中也内置了一些常用的变量。
参考官网
https://learning.postman.com/docs/writing-scripts/script-references/variables-list/
使用的时候 还是直接使用 {{}}
来引用变量。