使用 Azure DevOPS API 6.0-preview.1 和 python 更改项目头像
Change project Avatar with Azure DevOPS API 6.0-preview.1 and python
我正在尝试使用 api 为 Azure DevOps 中的项目更改项目 Avatar/picture。
为此,我正在使用 python 脚本。 api docu 声明图片必须作为字节数组发送。但是类型被描述为字符串数组。所以对我来说,听起来字节数组必须转换为字符串,然后发送 json.
在 python 中看起来像这样:
url = f'https://dev.azure.com/{organization}/_apis/projects/{project_id}/avatar?api-version=6.0-preview.1 '
with open(project_picture_path, "rb") as image:
image_array = []
while byte := image.read(1):
image_array.append(byte)
image_array = str(image_array)
json1 = json.dumps({"image": image_array})
headers = {'Content-type': 'application/json'}
r = requests.put(url, data=json1, auth=auth, headers=headers)
print(r.status_code)
当我向服务器发送此放置请求时,它只响应 204 http 代码,这本身就很奇怪,因为文档声明它应该响应 200。
当我在DevOps中进入项目页面时,图片确实发生了变化,但不是我指定的图片。而不是从默认到似乎是占位符图像。
可以看到对比here
我不知道这里出了什么问题。
还有其他人试过这样做吗?
经过大量测试,我找到了解决方案。
api 想要获取字节作为 int 值,所以我们必须像这样将它们转换为 int:
with open(project_picture_path, "rb") as image:
image_array = []
while byte := image.read(1):
image_array.append(int.from_bytes(byte, 'big'))
json1 = json.dumps({"image": image_array})
headers = {'Content-type': 'application/json'}
r = requests.put(url, data=json1, auth=auth, headers=headers)
print(r.status_code)
这样 api 仍然会给出 204 响应代码,但图片会正确更改。这绝对应该在文档中更改。
我正在尝试使用 api 为 Azure DevOps 中的项目更改项目 Avatar/picture。 为此,我正在使用 python 脚本。 api docu 声明图片必须作为字节数组发送。但是类型被描述为字符串数组。所以对我来说,听起来字节数组必须转换为字符串,然后发送 json.
在 python 中看起来像这样:
url = f'https://dev.azure.com/{organization}/_apis/projects/{project_id}/avatar?api-version=6.0-preview.1 '
with open(project_picture_path, "rb") as image:
image_array = []
while byte := image.read(1):
image_array.append(byte)
image_array = str(image_array)
json1 = json.dumps({"image": image_array})
headers = {'Content-type': 'application/json'}
r = requests.put(url, data=json1, auth=auth, headers=headers)
print(r.status_code)
当我向服务器发送此放置请求时,它只响应 204 http 代码,这本身就很奇怪,因为文档声明它应该响应 200。
当我在DevOps中进入项目页面时,图片确实发生了变化,但不是我指定的图片。而不是从默认到似乎是占位符图像。 可以看到对比here
我不知道这里出了什么问题。 还有其他人试过这样做吗?
经过大量测试,我找到了解决方案。
api 想要获取字节作为 int 值,所以我们必须像这样将它们转换为 int:
with open(project_picture_path, "rb") as image:
image_array = []
while byte := image.read(1):
image_array.append(int.from_bytes(byte, 'big'))
json1 = json.dumps({"image": image_array})
headers = {'Content-type': 'application/json'}
r = requests.put(url, data=json1, auth=auth, headers=headers)
print(r.status_code)
这样 api 仍然会给出 204 响应代码,但图片会正确更改。这绝对应该在文档中更改。