You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Bitbucket Server API获取YAML文件?

如何通过Bitbucket Server API获取YAML文件?

嘿,我来帮你搞定这个问题!你现在的代码之所以输出的不是预期的YAML格式,是因为你调用的/browse API端点返回的是文件浏览元数据(比如分页信息、每一行的内容结构),而不是直接的原始文件内容。你把这些元数据直接转成YAML,自然就不是你想要的docker-compose.yml本身的格式了。

下面给你两种可行的解决方案:

方案一:直接调用获取原始文件的API端点

Bitbucket Server提供了专门获取原始文件内容的API,路径是/rest/api/latest/projects/{projectKey}/repos/{repoSlug}/raw/{filePath}。用这个端点请求,能直接拿到文件的原始文本,不需要处理JSON结构。

示例代码:

import requests
import yaml

# 替换为你的实际API地址(把原来的browse换成raw)
raw_file_url = 'https://our-company-bitbucket-url.io/rest/api/latest/projects/our-project/repos/our-repo/raw/reporting-distribution-resources/src/main/resources/docker/docker-compose.yml'
headers = {'Authorization': 'Bearer SUPERSECRETAUTHENTICATIONTOKEN69'}

response = requests.get(raw_file_url, headers=headers)

# 检查请求是否成功
if response.status_code == 200:
    # 直接拿到原始YAML文本,打印出来就是你要的格式
    compose_content = response.text
    print(compose_content)
    
    # 如果需要把YAML文本转成Python对象再处理,也可以这样做
    # compose_data = yaml.safe_load(compose_content)
    # 之后可以根据需求修改数据,再转成YAML字符串
    # print(yaml.dump(compose_data, sort_keys=False))
else:
    print(f"请求失败啦,状态码: {response.status_code}")

方案二:从现有返回结果中提取拼接内容

如果因为某些限制不能更换API端点,那也可以从当前返回的JSON数据里,把lines数组中每一项的text字段提取出来,再拼接成完整的YAML文本。

示例代码:

import requests
import yaml

url = 'https://our-company-bitbucket-url.io/rest/api/latest/projects/our-project/repos/our-repo/browse/reporting-distribution-resources/src/main/resources/docker/docker-compose.yml'
headers = {'Authorization': 'Bearer SUPERSECRETAUTHENTICATIONTOKEN69'}

# 获取API返回的JSON数据
response_data = requests.get(url, headers=headers).json()

# 提取每一行的text并拼接成完整的YAML内容
compose_content = '\n'.join(line['text'] for line in response_data['lines'])
print(compose_content)

# 同样,如果需要转成Python对象处理,用yaml.safe_load即可
# compose_data = yaml.safe_load(compose_content)

简单总结一下:你之前的代码把包含分页、行结构的整个JSON对象转成了YAML,所以输出的是这些元数据的格式,而不是文件本身。上面两种方法都能帮你拿到真正的YAML文件内容~

备注:内容来源于stack exchange,提问作者Haverknol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 10:34:08