如何用Python将API A的imageID批量传递至API B的identifiers字段
从API A提取多个imageID并循环调用API B的实现方案
第一步:调用API A获取所有imageID
先修正API A代码里的语法问题(比如Category键的引号缺失、缩进错误),再从返回结果中提取所有imageId存入列表:
import requests # 确保导入requests库 def get_api_a_image_ids(): client_secret = "" request = requests.Requestor() # 假设这是你封装的请求类 path = "path to api" params = { "businessIdType": "ex", "businessId": "example", "limit": 50, "Category": "abc" # 修复引号缺失问题 } params_str = "&".join([f"{k}={v}" for k, v in params.items()]) url = "?".join([path, params_str]) vulns = request.post( url=url, version=1, json=params ) response_data = vulns.json() # 提取所有有效imageId到列表 image_ids = [] for vuln in response_data.get("vulnerabilities", []): image_id = vuln.get("imageId") if image_id: # 跳过空值,避免无效请求 image_ids.append(image_id) return image_ids
第二步:封装API B调用逻辑,循环传入每个imageID
把API B封装成可接收image_id参数的函数,遍历第一步拿到的imageID列表,逐个发起请求:
def call_api_b(image_id): client_id = "" client_secret = "" request = requests.Requestor() path = "path to api" # 动态替换identifiers字段为当前imageID params = { "identifierType": "ImageId", "identifiers": [image_id] } params_str = "&".join([f"{k}={v}" for k, v in params.items()]) url = "?".join([path, params_str]) vulns_y = request.post( url=url, version=1, json=params ) response_data_y = vulns_y.json() return response_data_y # 主执行逻辑 if __name__ == "__main__": all_image_ids = get_api_a_image_ids() # 遍历每个imageID调用API B for img_id in all_image_ids: print(f"处理imageID: {img_id}") api_b_result = call_api_b(img_id) # 这里可根据需求处理返回结果,比如存储、打印等 print(f"API B返回: {api_b_result}")
注意事项
- 确认
requests.Requestor是你项目中正确封装的请求类,若用原生requests库,需将请求方式改为requests.post()并调整参数 - 加入空值判断是为了避免API A返回的
vulnerabilities元素中缺少imageId的情况,防止无效请求
内容的提问来源于stack exchange,提问作者user19378169
相关产品推荐
相关产品推荐

