如何使用JUnit/REST Assured从API响应提取ID值并存入变量?
没问题!我来给你几个实用的方案,不管你用什么技术栈都能轻松把URL里的ID提取出来存到变量里~
方案1:Python(用requests + urllib.parse)
这是后端/脚本场景里最常用的方式,代码清晰还不容易出错:
import requests from urllib.parse import urlparse, parse_qs # 发送API请求获取响应 response = requests.get("你的API端点URL") data = response.json() # 提取第一个item的url item_url = data["items"][0]["url"] # 解析URL,提取id参数 parsed_url = urlparse(item_url) id_value = parse_qs(parsed_url.query)["id"][0] # 现在id_value就是你要的19909090啦,可以直接用或者存起来 print(id_value)
解释: 用urlparse拆分URL结构,parse_qs把查询参数转成字典,这样直接取id对应的第一个值就搞定,不用写容易出错的正则表达式。
方案2:JavaScript(浏览器/Node.js通用)
不管是前端页面还是Node脚本,都可以用原生的URL对象来处理:
// 假设你已经拿到了API响应数据(比如用fetch或者axios请求后) const apiResponse = { "items": [ { "url": "http://www.localhost.com:8080/user?id=19909090" } ] }; // 提取URL并创建URL对象 const url = new URL(apiResponse.items[0].url); // 获取id参数 const idValue = url.searchParams.get("id"); // 现在idValue就是19909090,直接用就行 console.log(idValue);
解释: 原生URL对象自带的searchParams方法可以直接提取查询参数,兼容性好还省心。
方案3:命令行快速测试(curl + jq)
如果只是想在终端里快速提取ID,用curl请求API,再用jq处理:
# 发送请求并提取ID id_value=$(curl -s "你的API端点URL" | jq -r '.items[0].url' | awk -F'id=' '{print $2}') # 打印结果 echo $id_value
解释: 先用jq把URL提取出来,再用awk以id=为分隔符取后面的部分,一步到位拿到ID。
内容的提问来源于stack exchange,提问作者Archer
相关产品推荐
相关产品推荐

