是否可以在 Azure DevOps 中提供指向文件原始内容的链接

Gre*_*ian 25 azure azure-devops azure-devops-rest-api

可以在 GitHub 中生成文件原始内容的链接,是否可以使用 VSTS/DevOps?

Zac*_*ten 28

即使在阅读了现有的答案之后,我仍然有点挣扎,所以我想留下更彻底的回应。

正如其他人所说,模式是(查询拆分为单独的行以方便阅读):

https://dev.azure.com/{{organization}}/{{project}}/_apis/sourceProviders/{{providerName}}/filecontents
  ?repository={{repository}}
  &path={{path}}
  &commitOrBranch={{commitOrBranch}}
  &api-version=5.0-preview.1
Run Code Online (Sandbox Code Playgroud)

但是你如何找到这些变量的值呢?如果您进入 Azure DevOps,从左侧导航中选择 Repos > Files,然后选择一个特定文件,您当前的 url 应如下所示:

https://dev.azure.com/{{organization}}/{{project}}/_git/{{repository}}?path=%2Fpackage.json
Run Code Online (Sandbox Code Playgroud)

您应该将这些值用于组织、项目和存储库。对于路径,您将看到 unix 文件路径的 HTTP 编码版本。 %2F是 的 HTTP 编码/,因此该路径实际上只是/package.json(像Postman这样的工具会为您进行该编码)。

提交或分支是不言自明的;你要么知道你想要什么这个值,要么你应该使用master. 我在上面的 url 中对 api 版本进行了“硬编码”,因为这是文档当前指向的内容。

对于最后一个变量,您需要providerName. 简而言之,您可能应该使用TfsGit. 我通过查看源提供者列表并寻找值为truefor 的提供者获得了这个值supportedCapabilities.queryFileContents

但是,如果您只是请求此 URL,您将收到“203 Non-Authoritative Information”响应,因为您仍然需要对自己进行身份验证。再次参考相同的文档,它说使用基本身份验证,用户名的任何值和密码的个人访问令牌。您可以在以下位置创建个人访问令牌https://dev.azure.com/{{organization}}/_usersSettings/tokens;确保它具有令牌管理 - 读取和管理权限。

如果您不熟悉这类事情,Postman 再次在您进入代码之前对让这些请求工作非常有帮助。


因此,如果您有一个src在根目录下有一个目录的存储库,并且您正在尝试获取 的文件内容src/package.json,则您的 URL 应该类似于:

https://dev.azure.com/{{organization}}/{{project}}/_apis/sourceProviders/TfsGit/filecontents?repository={{repository}}&commitOrBranch=master&api-version={{api-version}}&path=src%2Fpackage.json
Run Code Online (Sandbox Code Playgroud)

并且不要忘记基本身份验证!

  • 很好的答案,小小的补充。我生成了个人访问令牌,但除非启用“令牌管理 - 读取和管理”权限,否则它将无法工作。我本以为正确的权限是“代码-读取”,但这似乎没有效果。 (4认同)
  • 截至目前,您必须设置“构建:读取”令牌范围才能实现此目的。不再需要“令牌管理”。如果您愿意,您还可以使用现代的“api-version=7.0”。URL 的其余部分保持不变。 (2认同)

4c7*_*b41 7

当然,这是所需的休息电话:

GET https://feeds.dev.azure.com/{organization}/_apis/packaging/Feeds/{feedId}/packages/{packageId}?includeAllVersions={includeAllVersions}&includeUrls={includeUrls}&isListed={isListed}&isRelease={isRelease}&includeDeleted={includeDeleted}&includeDescription={includeDescription}&api-version=5.0-preview.1
Run Code Online (Sandbox Code Playgroud)

https://docs.microsoft.com/en-us/rest/api/azure/devops/artifacts/artifact%20%20details/get%20package?view=azure-devops-rest-5.0#package

  • 我如何对其进行身份验证? (2认同)

小智 5

您可以使用 chrome 获取原始 URL。

打开开发人员工具并查看“网络”选项卡。

导航以在 DevOps 门户(内容面板)中查看所需的文件。内容视图可见后,再次检查网络选项卡并找到以“Items?Path”开头的 URL,这是包含所需的“url:”元素的 json 响应。