REST API 调用 TFS2013
REST API call for TFS2013
好的,我已经阅读了多篇关于我的主题的文章,但 none 似乎有所帮助。我正试图完成这个人在这篇文章 here 中想要的同样的事情。
我在 angular http get 请求中使用了答案 (https://{yourserver}/defaultcollection/_apis/git/repositories?api-version=1.0 ) 中所述的示例,但出现 401 错误说我提供的凭据无效。
然后我下载了 curl 并提供了以下命令 "curl -u username:password http://{myserver}/defaultcollection/_apis/git/repositories?api-version=1.0",返回的结果是一样的,html 说我没有有效的凭据。有人能给我指出正确的方向,这样我就可以将项目的根分支和子分支和数据一起拉出来吗?
本质上,我正在寻找一种从服务器提取数据并将其显示在我的网络应用程序上的方法。我需要每个分支和子分支的分支名称和历史记录。
更新
因此,我现在可以使用 Richard 推荐的 --ntlm 开关将 cURL 连接到该服务中。现在,为了让我的应用程序真正连接到服务,我发现我可以使用 windows 凭据:
withCredentials:true
它不再给我 401 错误。相反,我没有收到新的错误说明:
XMLHttpRequest cannot load http://{servername}/{defaultcollection}/_apis/projects?api-version=1.0. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
我接下来要做什么才能让它发挥作用?
解决方案
我采纳了 Richard 的建议并创建了我自己的 asp.net 网络 api 来与 tfs 进行通信。我能够修改 web.config 文件以允许 CORS。我将以下行添加到文件的 system.webServer 部分。
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
这样做解决了我收到的错误消息,并且创建一个简单的 api 来获取特定信息并不难。感谢大家的帮助。
在您的 curl 命令中添加 --ntlm
作为选项。
命令应该如下:
curl -u username:password --ntlm http://{myserver}/defaultcollection/_apis/git/repositories?api-version=1.0
请注意,API 目前不支持 CORS。这意味着您可以毫无问题地从您自己的服务器端代码进行 API 调用,但不能直接从浏览器进行调用。有一个 UserVoice suggestion 可以启用此功能,您可以投票给它。
好的,我已经阅读了多篇关于我的主题的文章,但 none 似乎有所帮助。我正试图完成这个人在这篇文章 here 中想要的同样的事情。 我在 angular http get 请求中使用了答案 (https://{yourserver}/defaultcollection/_apis/git/repositories?api-version=1.0 ) 中所述的示例,但出现 401 错误说我提供的凭据无效。
然后我下载了 curl 并提供了以下命令 "curl -u username:password http://{myserver}/defaultcollection/_apis/git/repositories?api-version=1.0",返回的结果是一样的,html 说我没有有效的凭据。有人能给我指出正确的方向,这样我就可以将项目的根分支和子分支和数据一起拉出来吗?
本质上,我正在寻找一种从服务器提取数据并将其显示在我的网络应用程序上的方法。我需要每个分支和子分支的分支名称和历史记录。
更新
因此,我现在可以使用 Richard 推荐的 --ntlm 开关将 cURL 连接到该服务中。现在,为了让我的应用程序真正连接到服务,我发现我可以使用 windows 凭据:
withCredentials:true
它不再给我 401 错误。相反,我没有收到新的错误说明:
XMLHttpRequest cannot load http://{servername}/{defaultcollection}/_apis/projects?api-version=1.0. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
我接下来要做什么才能让它发挥作用?
解决方案
我采纳了 Richard 的建议并创建了我自己的 asp.net 网络 api 来与 tfs 进行通信。我能够修改 web.config 文件以允许 CORS。我将以下行添加到文件的 system.webServer 部分。
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
这样做解决了我收到的错误消息,并且创建一个简单的 api 来获取特定信息并不难。感谢大家的帮助。
在您的 curl 命令中添加 --ntlm
作为选项。
命令应该如下:
curl -u username:password --ntlm http://{myserver}/defaultcollection/_apis/git/repositories?api-version=1.0
请注意,API 目前不支持 CORS。这意味着您可以毫无问题地从您自己的服务器端代码进行 API 调用,但不能直接从浏览器进行调用。有一个 UserVoice suggestion 可以启用此功能,您可以投票给它。