REST是一种简洁方便的Web服务,通过基于http协议的远程通信,可以为多种客户端程序提供远程服务,大幅提高了服务器系统的可扩展性。

微软宣布从Team Foundation Server 从2015版本开始提供REST API远程访问,其实早在2014年Team Foudation Service(VSO)就发布了REST API的接口程序。TFS通过TEST,为多种客户端和应用程序,多种设备提供了一种轻量级方式,使其可以快速与TFS服务器实现数据互访。开发人员可以在Windows, Andriod, iOS等设备上运行的客户端程序访问TFS,实现代码签入,项目规划和跟踪等几乎所有TFS客户端可以完成的工作。

在REST API推出之前,开发人员只能通过.NET API或者Java API实现TFS的扩展。现在通过REST API,客户可以在任意平台和终端中实现扩展,特别是在手机移动端等设备。不同的开发人员可以使用自己熟悉的开发工具和开发语言,调用REST API,实现不同系统与TFS的集成。

这里我以最常见的JavaScript为例子,结合Jquery,通过最常见的工作项操作示例,来说明如何使用TFS的REST API接口。

在开始之前,你可以通过这个链接https://www.visualstudio.com/en-us/integrate/api/overview 获取TFS所有API的描述。

1. 创建一个工作项

需要注意下面的示例程序中使用了Jquery读取HTML控件中配置的信息,例如TFS的地址、团队项目名称、账户和密码等。

function NewWit() {
            var tfsurl = $("#TFSCollection").val() + $("#ProjectName").val() + "/_apis/wit/workitems/$" + $("#WorkItemType").val() + "?api-version=1.0";
            //url的完整示例:https://{account}.visualstudio.com/defaultcollection/{project}/_apis/wit/workitems/${workitemtypename}?api-version={version}
            $(TFSUrl).val(tfsurl);
            var paraData = $("#ApiParas").val();//示例:[{"op":"add","path":"/fields/System.Title","value":"工作项标题"},{"op":"add","path":"/fields/System.AssignedTo","value":"tfsadmin"}]
            $(ApiParas).val(paraData);
            $.ajax({
                url: tfsurl,
                type: "PATCH",
                contentType: "application/json-patch+json",
                data: paraData,
                success: function (data) {
                    $("#ApiResult").val(JSON.stringify(data));
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    $("#ApiResult").val("ERROR:\n" + errorThrown);
                },
                username: $("#TFSUserName").val(),
                password: $("#TFSPassword").val()
        });
        }

2. 修改工作项

function UpdateWit() {
            var tfsurl = $("#TFSCollection").val() + "_apis/wit/workitems/" + $("#WitId").val() + "?api-version=1.0";
            $(TFSUrl).val(tfsurl);
            var paraData = $("#ApiParas").val(); //示例:[{"op":"add","path":"/fields/System.Title","value":"工作项标题"},{"op":"add","path":"/fields/System.AssignedTo","value":"tfsadmin"}]
            $(ApiParas).val(paraData);
            $.ajax({
                url: tfsurl,
                type: "PATCH",
                contentType: "application/json-patch+json",
                data: paraData,
                success: function (data) {
                    $("#ApiResult").val(JSON.stringify(data));
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    $("#ApiResult").val("ERROR:\n" + errorThrown);
                },
                username: $("#TFSUserName").val(),
                password: $("#TFSPassword").val()
            });
        }

3. 添加工作项链接

function UpdateWit() {
            var tfsurl = $("#TFSCollection").val() + "_apis/wit/workitems/" + $("#WitId").val() + "?api-version=1.0";
            $(TFSUrl).val(tfsurl);
            var paraData = $("#ApiParas").val(); //示例:[{"op":"add","path":"/relations/-","value":{"rel":"System.LinkTypes.Dependency-forward","url":"http://tfs2015cn:8080/tfs/AbchinaCollection/_apis/wit/workitems/17"}}]
            $(ApiParas).val(paraData);
            $.ajax({
                url: tfsurl,
                type: "PATCH",
                contentType: "application/json-patch+json",
                data: paraData,
                success: function (data) {
                    $("#ApiResult").val(JSON.stringify(data));
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    $("#ApiResult").val("ERROR:\n" + errorThrown);
                },
                beforeSend: function (xhr) {
                    $("#ApiResult").val("loading...");
                },
                username: $("#TFSUserName").val(),
                password: $("#TFSPassword").val()
            });
        }

4. 修改迭代路径

function UpdateWit() {
            var tfsurl = $("#TFSCollection").val() + "_apis/wit/workitems/" + $("#WitId").val() + "?api-version=1.0";
            $(TFSUrl).val(tfsurl);
            var paraData = $("#ApiParas").val(); //示例:[{"op":"add","path":"/fields/System.Title","value":"工作项标题 user 2"},{"op":"add","path":"/fields/System.IterationPath","value":"CMMI\\迭代 0"}]
            $(ApiParas).val(paraData);
            $.ajax({
                url: tfsurl,
                type: "PATCH",
                contentType: "application/json-patch+json",
                data: paraData,
                success: function (data) {
                    $("#ApiResult").val(JSON.stringify(data));
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    $("#ApiResult").val("ERROR:\n" + errorThrown);
                },
                username: $("#TFSUserName").val(),
                password: $("#TFSPassword").val()
            });
        }

http://www.cnblogs.com/danzhang/  ALM MVP 张洪君

补充资源:

http://www.clemensreijnen.nl/post/2014/10/09/Visual-Studio-Online-Rest-API-introduction-and-sample-on-GitHub

http://blogs.msdn.com/b/visualstudioalm/archive/2015/05/01/extensions-for-visual-studio-online-rest-apis-for-tfs-2015-rc-and-more-from-build-2015.aspx

http://www.dotnetcurry.com/visualstudio/1162/using-rest-api-tfs-visual-studio-online

初探Team Foundation Server (TFS) 2015 REST API的更多相关文章

  1. In-Place upgrade to Team Foundation Server (TFS) 2015 from TFS 2013Team Foundation Server TFS TFS 2015 TFS upgrade TFS with Sharepoint

    This upgrade document gives detailed step by step procedure for the In-Place upgrade from TFS 2013 t ...

  2. Team Foundation Server (TFS) 2015 安装指导

    1. 概述 微软于8月6日发布了大家期待已久的TFS 2015正式版, https://www.visualstudio.com/en-us/news/tfs2015-vs.aspx ,新版本包含的大 ...

  3. PLSQL(PL/SQL)集成Team Foundation Server (TFS),实现数据库代码的版本管理

    PL/SQL是面向Oralcle数据库的集成开发环境,是众多Oracle数据库开发人员的主要工具.由于PL/SQL(百度百科)不仅是一种SQL语言,更是一种过程编程语言,在项目实施过程中,会积累大量除 ...

  4. Visual Studio 6 (VC6)连接Team Foundation Server (TFS 2018),实现源代码的版本管理

    1. 概述 Visual Studio 6(VB6, VC6, Foxpro-)是微软公司在1998年推出的一款基于Windows平台的软件开发工具,也是微软推出.NET开发框架之前的最后一个IDE工 ...

  5. 在域信任环境中使用 Team Foundation Server (TFS 2013)

    原文:在域信任环境中使用 Team Foundation Server (TFS 2013) 1. 用户情景和方案: XX公司的大部分软件产品通过软件外包的方式由开发商完成.为加强对软件开发的进度和质 ...

  6. Team Foundation Server (TFS)与Project Server集成,使用DNS(友好地址)地址注册PWA

    问题描述: 当Team Foundation Server(TFS 2010/2012/2013)与Project Server高可用性的环境集成时,必然会使用Project Server (PWA) ...

  7. 在Sublime中集成Team Foundation Server (TFS),实现版本管理

    Sublime是一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,由于它开发的技术架构.丰富的插件,和轻盈而快速的编程响应,Sublime广受程序员的爱好.在C, C++, Javascri ...

  8. 让Team Foundation Server/TFS自动记住用户名密码解决方案

    在使用Team Foundation Server(以下简称TFS) 的时候,在每次打开Visual Studio TFS时候,需要输入用户名和秘密,比较麻烦.现提供一种方法可以解决这个问题: 依次执 ...

  9. 自定义Team Foundation Server (TFS) 与Project Professional的集成字段

    用户可以象使用Office Excel一样,使用Project Professional连接TFS,将数据下载到本地修改,并且发布到TFS服务器上,如果你习惯使用Project来计划你的项目,那么Pr ...

随机推荐

  1. Mongodb 语法,update,insert,delete,find

    ---恢复内容开始--- db.Users.update({OrganizationCode:"Global"},{$set:{OrganizationCode:"Fre ...

  2. 重新想象 Windows 8 Store Apps (37) - 契约: Settings Contract

    [源码下载] 重新想象 Windows 8 Store Apps (37) - 契约: Settings Contract 作者:webabcd 介绍重新想象 Windows 8 Store Apps ...

  3. Ogre2.1 灯光与阴影

    Ogre2.1大量光源渲染 Ogre2.1不是采用现在大部分引擎所用的延迟渲染,而是采用一种前向渲染的改进技术,理论基本来自于Forward+,见如下. http://www.klayge.org/? ...

  4. JAVA书写规范

    java程序书写规范 命名规范    1.一般概念        1.尽量使用完整的英文描述符        2.采用适用于相关领域的术语        3.采用大小写混合使名字可读        4 ...

  5. 基于h5的图片无刷新上传(uploadifive)

    基于h5的图片无刷新上传(uploadifive) uploadifive简介 了解uploadify之前,首先了解来一下什么是uploadify,uploadfy官网,uploadify和uploa ...

  6. 使用Lucene.NET实现简单的站内搜索

    使用Lucene.NET实现简单的站内搜索 导入Lucene.NET 开发包 Lucene 是apache软件基金会一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和 ...

  7. IOS 开发一些常用的地址

    1.开发者中心 https://developer.apple.com/membercenter/index.action 2.itunesconnect https://itunesconnect. ...

  8. IOS开发中(null)与<null>的处理

    不小心在开发过程中,得到了(null)以及<null>的返回值,找了好长时间只找到了一个关于<null>的. 由于要根据返回值进行判断,做出必要反应,因此必须知道返回值所代表的 ...

  9. C# 零散知识 扩展方法 类型约束

    今天看到这么一段代码,我看下面调用了NotifyPropertyChanged定义了两个参数,但是调用的时候只写了一个参数.后来查了下,原来这个是扩展方法的用法, 就是说给T扩展了一个方法Notify ...

  10. chrome浏览器font-size<12px无效解决办法

    当样式设定font-size<12px时,chrome浏览器里字体显示仍为12px:如font-size:11px; 但是chrome还是12px的大小,很不听话. 今天我就遇到了这样的问题?网 ...