上下游传参 概念

上下游传参-进阶 - 图1
根据业务场景,有不同的上游和下游接口需要参数的传递。

在讲上下游传参之前,先了解一些必要代码基础。


json数据

json 格式的数据 都是 {} 括起来的。

基本的语法

打开Postman 工具的开发者选项
image.png
image.png

开发者选项中可以编写一些基本的JavaScript代码,因为Postman中支持 JavaScript的语法。

定义json格式的数据

使用var 关键字 定义 变量,
变量名 jsondata
变量的值为 json格式的数据

  1. var jsondata = {"name":"xiaoming"}

image.png

定义json格式的数据

    1. 最外层使用 {}
    1. 内容以成对出现 中间用 : , 多对数据之间使用 ,

定义一个json格式的数据,要求

name 张铁柱
age 25
workyear 3
  1. var jsondata = {"name":"张铁柱","age":25,"workyear":3}

访问具体字段的值

通过 . 的方式来访问其中的字段值
image.png

接口中的应用

image.png

新建主题的接口 成功之后会返回 topic_id 的值,需要将 topic_id 的值提取出来设置为变量。
image.png

postman 设置变量

打开 Tests 面板

image.png

编写代码

用代码的方式设置变量

  1. // pm.response.json() 是postman提供的语法 表示的是服务器返回的json数据结果 (固定的语法)
  2. var jsondata = pm.response.json();
  3. // 使用postman中的功能设置变量 pm.globals.set 固定语法;
  4. pm.globals.set("topid", jsondata.topic_id);

设置成功之后可以看到 设置变量名以及最新的变量值
image.png
运行成功之后,可以看到 会自动将服务器返回结果中的 topic_id 值设置为变量 topid

引用上游接口变量

已经将具体值提取为变量,下面在新建评论的请求中使用变量。
image.png
新建评论,评论成功之后 会返回 评论id, 在 【评论点赞】这个接口中需要使用到 评论id,所以需要将评论id 设置为变量。

image.png
在下游点赞接口中引用变量
image.png

复杂的json格式数据

有些服务器返回数据结果会比较多,有多层嵌套的情况下;
比如

  1. var jsondata = {
  2. "name":"zhangsan",
  3. "friends":{
  4. "name": "lisi"
  5. }
  6. }

当数据有多层嵌套的时候,访问里面的数据 需要 一层 一层 进行提取;
image.png

  1. var jsondata = {
  2. "name":"wangwu",
  3. "info":{
  4. "city":"shanghai",
  5. "phone":"134****1234",
  6. "friend":{
  7. "name":"xiaoming",
  8. "phone":"150****6666"
  9. }
  10. }
  11. }

image.png

[] 数组格式

在json中,如果要表示多个数据, 比如 小明有2个朋友。

  1. var jsondata = {
  2. "name":"xiaoming",
  3. "friends":[
  4. {"name":"xiaohua","age":22},
  5. {"name":"xiaohong","age":18}
  6. ]
  7. }

当有多个格式一致的数据存放在一起的时候,使用 []
数据在保存的时候,我们可以通过索引的方式来提取具体的值。
索引值从 0 开始, 0 表示 第一个。
比如第一个朋友的name
image.png

这里有如下数据

  1. var jsondata = {
  2. "success": true,
  3. "data": [
  4. {
  5. "id": "61c6c999c470c9129d8d7c3a",
  6. "author_id": "61c4132f7a242475bbd5cece",
  7. "tab": "ask",
  8. "content": "明天晴天",
  9. "title": "明天晴天吗????",
  10. "last_reply_at": "2021-12-25T07:49:24.577Z",
  11. "good": false,
  12. "top": false,
  13. "reply_count": 1,
  14. "visit_count": 3,
  15. "create_at": "2021-12-25T07:34:49.325Z",
  16. "author": {
  17. "loginname": "test_xyy",
  18. "avatar_url": "/public/images/userlogo.png"
  19. }
  20. },
  21. {
  22. "id": "61c6ccfbc470c9129d8d7f9b",
  23. "author_id": "61c4132e7a242475bbd5cecb",
  24. "tab": "ask",
  25. "content": "今天四大剁手聚会....",
  26. "title": "今晚吃什么呢?",
  27. "last_reply_at": "2021-12-25T07:49:15.885Z",
  28. "good": false,
  29. "top": false,
  30. "reply_count": 0,
  31. "visit_count": 0,
  32. "create_at": "2021-12-25T07:49:15.885Z",
  33. "author": {
  34. "loginname": "test_wyx",
  35. "avatar_url": "/public/images/userlogo.png"
  36. }
  37. },
  38. {
  39. "id": "61c6cc77c470c9129d8d7f45",
  40. "author_id": "61c4133c7a242475bbd5ced9",
  41. "tab": "ask",
  42. "content": "不过了,哈哈哈",
  43. "title": "一个人的圣诞节",
  44. "last_reply_at": "2021-12-25T07:49:05.244Z",
  45. "good": false,
  46. "top": false,
  47. "reply_count": 1,
  48. "visit_count": 0,
  49. "create_at": "2021-12-25T07:47:03.235Z",
  50. "author": {
  51. "loginname": "test_sxz",
  52. "avatar_url": "/public/images/userlogo.png"
  53. }
  54. },
  55. {
  56. "id": "61c5787e8256bd0af8a9c235",
  57. "author_id": "61c4131b7a242475bbd5ceb5",
  58. "tab": "ask",
  59. "content": "看完记得",
  60. "title": "看,看,看什么看",
  61. "last_reply_at": "2021-12-25T07:49:01.273Z",
  62. "good": false,
  63. "top": false,
  64. "reply_count": 19,
  65. "visit_count": 63,
  66. "create_at": "2021-12-24T07:36:30.316Z",
  67. "author": {
  68. "loginname": "test_zhj",
  69. "avatar_url": "/public/images/userlogo.png"
  70. }
  71. },
  72. {
  73. "id": "61c6ccecc470c9129d8d7f94",
  74. "author_id": "61c4131b7a242475bbd5ceb5",
  75. "tab": "ask",
  76. "content": "干饭人干饭魂",
  77. "title": "干饭人干饭人干饭魂",
  78. "last_reply_at": "2021-12-25T07:49:00.691Z",
  79. "good": false,
  80. "top": false,
  81. "reply_count": 0,
  82. "visit_count": 0,
  83. "create_at": "2021-12-25T07:49:00.691Z",
  84. "author": {
  85. "loginname": "test_zhj",
  86. "avatar_url": "/public/images/userlogo.png"
  87. }
  88. },
  89. {
  90. "id": "61c6cce1c470c9129d8d7f92",
  91. "author_id": "61c4132e7a242475bbd5ceca",
  92. "tab": "ask",
  93. "content": "今天圣诞节,我和朋友们在餐厅过",
  94. "title": "圣诞节快乐",
  95. "last_reply_at": "2021-12-25T07:48:49.676Z",
  96. "good": false,
  97. "top": false,
  98. "reply_count": 0,
  99. "visit_count": 0,
  100. "create_at": "2021-12-25T07:48:49.676Z",
  101. "author": {
  102. "loginname": "test_dongwenjuan",
  103. "avatar_url": "/public/images/userlogo.png"
  104. }
  105. },
  106. {
  107. "id": "61c6ccd7c470c9129d8d7f91",
  108. "author_id": "61c413347a242475bbd5ced5",
  109. "tab": "ask",
  110. "content": "往事知多少,小楼昨夜又东风,故国不堪回首月明中",
  111. "title": "春花秋月何时了",
  112. "last_reply_at": "2021-12-25T07:48:39.996Z",
  113. "good": false,
  114. "top": false,
  115. "reply_count": 0,
  116. "visit_count": 0,
  117. "create_at": "2021-12-25T07:48:39.996Z",
  118. "author": {
  119. "loginname": "test_chhao",
  120. "avatar_url": "/public/images/userlogo.png"
  121. }
  122. },
  123. {
  124. "id": "61c6ccd7c470c9129d8d7f90",
  125. "author_id": "61c413347a242475bbd5ced5",
  126. "tab": "ask",
  127. "content": "往事知多少,小楼昨夜又东风,故国不堪回首月明中",
  128. "title": "春花秋月何时了",
  129. "last_reply_at": "2021-12-25T07:48:39.044Z",
  130. "good": false,
  131. "top": false,
  132. "reply_count": 0,
  133. "visit_count": 0,
  134. "create_at": "2021-12-25T07:48:39.044Z",
  135. "author": {
  136. "loginname": "test_chhao",
  137. "avatar_url": "/public/images/userlogo.png"
  138. }
  139. },
  140. {
  141. "id": "61c6cccec470c9129d8d7f8d",
  142. "author_id": "61c4132e7a242475bbd5ceca",
  143. "tab": "ask",
  144. "content": "今天圣诞节,我和朋友们在餐厅过",
  145. "title": "圣诞节快乐",
  146. "last_reply_at": "2021-12-25T07:48:30.987Z",
  147. "good": false,
  148. "top": false,
  149. "reply_count": 0,
  150. "visit_count": 0,
  151. "create_at": "2021-12-25T07:48:30.987Z",
  152. "author": {
  153. "loginname": "test_dongwenjuan",
  154. "avatar_url": "/public/images/userlogo.png"
  155. }
  156. },
  157. {
  158. "id": "61c6ccc3c470c9129d8d7f87",
  159. "author_id": "61c4131b7a242475bbd5ceb5",
  160. "tab": "ask",
  161. "content": "干饭人干饭魂",
  162. "title": "干饭人干饭人干饭魂",
  163. "last_reply_at": "2021-12-25T07:48:19.281Z",
  164. "good": false,
  165. "top": false,
  166. "reply_count": 0,
  167. "visit_count": 0,
  168. "create_at": "2021-12-25T07:48:19.281Z",
  169. "author": {
  170. "loginname": "test_zhj",
  171. "avatar_url": "/public/images/userlogo.png"
  172. }
  173. }
  174. ]
  175. }

image.png

上下游传参
image.png

上游设置变量

  1. // 将第1个话题的id设置为变量
  2. var jsondata = pm.response.json();
  3. pm.globals.set("id",jsondata.data[0].id);

下游接口中引用变量。
image.png

总结

上下游传参

  1. 确定业务中的上游,下游接口
  2. 使用代码的方式在 上游接口中 设置变量
  3. 下游引用变量。

附件

上下游传参.postman_collection.json