是否可以链接到Azure DevOps中文件的原始内容

时间:2019-01-10 22:46:18

标签: azure azure-devops azure-devops-rest-api

有可能在GitHub中生成文件原始内容的链接,这可能与VSTS / DevOps有关吗?

6 个答案:

答案 0 :(得分:2)

当然,这是需要的其余电话:

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

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

答案 1 :(得分:0)

我能够使用此URL获取文件的原始内容。

获取https://dev.azure.com/ {organization} / {project} / _ apis / sourceProviders / {providerName} / filecontents?serviceEndpointId = {serviceEndpointId}&repository = {repository}&commitOrBranch = {commitOrBranch}&path = {path}&api版本= 5.0-preview.1

我从这里得到的。

https://docs.microsoft.com/en-us/rest/api/azure/devops/build/source%20providers/get%20file%20contents?view=azure-devops-rest-5.0

答案 2 :(得分:0)

即使阅读了现有的答案,我仍然对此有些挣扎,所以我想留下更多的详尽答案。

正如其他人所说的,pattern是(查询分为几行以便于阅读):

https://dev.azure.com/{{organization}}/{{project}}/_apis/sourceProviders/{{providerName}}/filecontents
  ?repository={{repository}}
  &path={{path}}
  &commitOrBranch={{commitOrBranch}}
  &api-version=5.0-preview.1

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

https://dev.azure.com/{{organization}}/{{project}}/_git/{{repository}}?path=%2Fpackage.json

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

提交或分支很容易解释;您要么知道此值的要求,要么应使用master。我已经在上面的网址中“硬编码”了api版本,因为这就是documentation当前指向的内容。

对于最后一个变量,您需要providerName。简而言之,您可能应该使用TfsGit。通过查看list of source providers并为true寻找一个值为supportedCapabilities.queryFileContents的值,我得到了这个值。

但是,如果您只是请求此URL,则会返回“ 203非权威信息”响应,因为您仍然需要进行身份验证。再次提到相同的documentation,它说要使用Basic auth,并将其任何值用作用户名,并将个人访问令牌用作密码。您可以在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

别忘了基本身份验证!

答案 3 :(得分:0)

从附件窗口中拖动文件名,并将其拖放到任何其他MS应用程序中,以获取原始URL或链接的文件名。

答案 4 :(得分:0)

我对此很陌生,在访问Azure DevOps存储库中的原始文件时遇到问题。在Github中很简单。

我想使用Curl下载CMD和BASH中的文件。 首先,我在浏览器中浏览到文件内容,并记下了粗体部分: https://dev.azure.com/ myOrg / _ git / myProjectName ?path =%2F MyFileName.ps1

然后,我构建了类似于上面@Zach发布的URL。

https://dev.azure.com/ myOrg / myProjectName / _ apis / sourceProviders / TfsGit / filecontents?repository = myProjectName &commitOrBranch = master &api-version = 5.0-preview.1&path =%2F MyFileName.ps1

现在,当我将上述URL粘贴到浏览器中时,它将以类似于GitHub的RAW形式显示内容。 区别在于我必须在我的Azure DevOps帐户中设置PAT(个人访问令牌),然后在下面的DOS / BASH示例中对URL进行身份验证:

curl -u myPATUserName:er90gngekj5er0df "https://dev.azure.com/myOrg/myProjectName/_apis/sourceProviders/TfsGit/filecontents?repository=myProjectName&commitOrBranch=master&api-version=5.0-preview.1&path=%2FMyFileName.ps1" -# -L -o MyFileName.ps1

答案 5 :(得分:0)

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

打开开发者工具并查看网络标签。

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