如何在Python中正确格式化带变量的Azure DevOps Pipeline API JSON请求
Azure DevOps Python API传参额外引号问题解决方案
问题原因
Azure DevOps 的Build REST API 要求templateParameters字段接收的是JSON序列化后的字符串,而非直接传入Python嵌套字典。你之前直接传递嵌套字典时,服务端会将内部的键值对整体识别为字符串类型,导致输出时自动带上额外双引号;GUI输入时服务端会直接解析输入的原始值,因此不会产生多余引号。
解决方法
引入json模块,手动将templateParameters对应的字典序列化为JSON字符串后再传入请求体即可。
修改后的代码如下:
import json import requests from requests.auth import HTTPBasicAuth # Api function def auth_restapi(): auth = HTTPBasicAuth(username, password) return auth url = "https://[ORG].visualstudio.com/[PROJECT]/_apis/build/builds?api-version=6.0" build_version = "1.2.3" # 手动序列化templateParameters的内容为JSON字符串 data = { "templateParameters": json.dumps({"build_version": build_version}), "definition": {"id": 4} } requests.post(url, auth=auth_restapi(), json=data)
修改后再次请求,日志输出就会和GUI输入效果一致,得到无额外引号的build_version: 1.2.3。
内容的提问来源于stack exchange,提问作者Josh Hyde
相关产品推荐
相关产品推荐

