its*_*o91 3 api rest curl angularjs
好的,我已经阅读了多篇关于我的主题的文章,但似乎没有任何帮助。我试图完成这个家伙在这篇文章中想同样的事情在这里。我在 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说我愿意没有有效的凭据。有人可以指出我正确的方向,以便我可以将项目根分支和子分支以及数据一起拉出来吗?
本质上,我正在寻找一种从服务器提取数据并将其显示在我的 Web 应用程序上的方法。我需要每个分支和子分支的分支名称和历史记录。
更新
所以我现在可以使用 Richard 推荐的 --ntlm 开关 cURL 进入这个服务。现在为了让我的应用程序真正连接到服务,我发现我可以使用以下方法传递 Windows 凭据:
withCredentials:true
Run Code Online (Sandbox Code Playgroud)
它不再给我 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.
Run Code Online (Sandbox Code Playgroud)
我接下来要采取什么措施来使这项工作发挥作用?
解决方案
我接受了 Richard 的建议并创建了我自己的 asp.net web api 来与 tfs 进行通信。我能够修改 web.config 文件以允许 CORS。我将以下行添加到文件的 system.webServer 部分。
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
Run Code Online (Sandbox Code Playgroud)
这样做已经解决了我收到的错误消息,并且创建一个简单的 api 来获取特定信息并不难。感谢所有的帮助。
在您的 curl 命令中添加--ntlm一个选项。
命令应如下所示:
curl -u username:password --ntlm http://{myserver}/defaultcollection/_apis/git/repositories?api-version=1.0
Run Code Online (Sandbox Code Playgroud)
请注意,该 API 当前不支持 CORS。这意味着您可以毫无问题地从自己的服务器端代码进行 API 调用,但不能直接从浏览器进行调用。有一个UserVoice 建议可以启用此功能,您可以投票支持。
| 归档时间: |
|
| 查看次数: |
1833 次 |
| 最近记录: |