Visual Studio Online 的一个新API

[原文发表地址] A new API for Visual Studio Online

[原文发表时间] 12 May 2014 9:00 AM

这周我在TechEd上宣布了一个重磅消息,它就是通过一个新的API

来访问Visual Studio Online(在未来的版本中会包括Team Foundation Server)。这个新的API基于REST,OAUTH,Json和Service Hooks-所有的这些标准web技术都是在业界得到广泛认可的。现在该API还处于preview阶段,并且我们会根据用户反馈不断地改进。

我们设计这个API是为了想要大大降低集成VS Online和其他基本web 工具的难度,并且能使得任何第三方商业工具或自定义工具通过移动设备轻松访问VS Online。由于我们之前使用了标准的技术,通过和设备简单的串联就能够实现很多集成,比如Zapier。所有可连接的设备-Android,iOS , Windows以及其他等都很大程度上支持服务使用这些协议。

作为第一波,我们致力于向18个工具/服务提供具体的集成,当然将来我们会增加更多。Zapier使数以百计的基本集成变得可能。

image

API文档

作为这些新API的一部分,我们已经创建了一组网页文档。新的VS Online REST,OAuth 和Service Hook文档在这里:

https://www.visualstudio.com/en-us/integrate/explore/explore-vso-vsi

也借此机会为我们的Visual Studio,Team Foundation Server和Visual Studio Online的所有内容创建一个统一的登录页面。

https://integrate.visualstudio.com

这些文档不但有很好的概念性内容,还有非常简单的API参考资料,比如本节中如何用REST获取工作项:

 

image

当你尝试它的时候,很多API会直接从浏览器中被调用。例如,当你浏览https://minka.visualstudio.com/defaultcollection/_apis/wit/workitems/73 (minka 是我的个人账户),我获取到下面这样的东西。所得到的精确输出格式取决于你的浏览器和你装了什么插件,但内容都是一样的。

 

image

因为东西太多,在这里我就不展示全部了:)。

文档中还会有一些的简单例子,同时我们也在持续更新,这里是一个C#的例子:

 public static async void GetBuilds()
 {
     try
     {
         var username = "username";
         var password = "password";
  
         using (HttpClient client = new HttpClient())
         {
             client.DefaultRequestHeaders.Accept.Add(
                 new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
  
             client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                 Convert.ToBase64String(
                     System.Text.ASCIIEncoding.ASCII.GetBytes(
                         string.Format("{0}:{1}", username, password))));
  
             using (HttpResponseMessage response = client.GetAsync(
                         "https://{account}.visualstudio.com/DefaultCollection/_apis/build/builds").Result)
             {
                 response.EnsureSuccessStatusCode();
                 string responseBody = await response.Content.ReadAsStringAsync();
                 Console.WriteLine(responseBody);
             }
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.ToString());
     }
 }

一旦有机会,我会给你一个更好的使用OAuth来支持集成身份验证的例子(而不是潜入凭据)。

如果你想要一个真正的例子,把代码签出到CodePlex的ZenDesk插件上:https://vsozendesk.codeplex.com

用Zapier连接服务器

我鼓励大家去了解下Zapier,有很多类似的服务,但我喜欢这个。它确实可以方便的将Service hook事件生产者和消费者连接起来,并且提供了一个很好的引导你完成这个过程的向导。你也可以访问这里的Visual Studio Online Zapier页面学习更多VS Online相关的东西,也可以看到它所提供的数百种连接服务:

https://zapier.com/zapbook/visual-studio-online/

这里是连接Visual Studio Online和Asana向导的一些截图,可以看出它真的很简单:

image

 

image

 

image

总的来说,我真的很期待这项新工作。我们已经努力工作了几个月,尽管它还没有完成,但是我仍希望读者们可以尝试一下。REST API将会继续发张,文档继续更新,我们也需要更多地例子等等。但在我看来这是个很好的开始,我相信你会喜欢它的。每个sprint将会有一些新的东西使它变得更好,试着用下吧,有什么想法请随时告知我们。

Brian