初探Team Foundation Server (TFS) 2015 REST API
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.dotnetcurry.com/visualstudio/1162/using-rest-api-tfs-visual-studio-online
初探Team Foundation Server (TFS) 2015 REST API的更多相关文章
- 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 ...
 - Team Foundation Server (TFS) 2015 安装指导
		
1. 概述 微软于8月6日发布了大家期待已久的TFS 2015正式版, https://www.visualstudio.com/en-us/news/tfs2015-vs.aspx ,新版本包含的大 ...
 - PLSQL(PL/SQL)集成Team Foundation Server (TFS),实现数据库代码的版本管理
		
PL/SQL是面向Oralcle数据库的集成开发环境,是众多Oracle数据库开发人员的主要工具.由于PL/SQL(百度百科)不仅是一种SQL语言,更是一种过程编程语言,在项目实施过程中,会积累大量除 ...
 - Visual Studio 6 (VC6)连接Team Foundation Server (TFS 2018),实现源代码的版本管理
		
1. 概述 Visual Studio 6(VB6, VC6, Foxpro-)是微软公司在1998年推出的一款基于Windows平台的软件开发工具,也是微软推出.NET开发框架之前的最后一个IDE工 ...
 - 在域信任环境中使用 Team Foundation Server (TFS 2013)
		
原文:在域信任环境中使用 Team Foundation Server (TFS 2013) 1. 用户情景和方案: XX公司的大部分软件产品通过软件外包的方式由开发商完成.为加强对软件开发的进度和质 ...
 - Team Foundation Server (TFS)与Project Server集成,使用DNS(友好地址)地址注册PWA
		
问题描述: 当Team Foundation Server(TFS 2010/2012/2013)与Project Server高可用性的环境集成时,必然会使用Project Server (PWA) ...
 - 在Sublime中集成Team Foundation Server (TFS),实现版本管理
		
Sublime是一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,由于它开发的技术架构.丰富的插件,和轻盈而快速的编程响应,Sublime广受程序员的爱好.在C, C++, Javascri ...
 - 让Team Foundation Server/TFS自动记住用户名密码解决方案
		
在使用Team Foundation Server(以下简称TFS) 的时候,在每次打开Visual Studio TFS时候,需要输入用户名和秘密,比较麻烦.现提供一种方法可以解决这个问题: 依次执 ...
 - 自定义Team Foundation Server (TFS) 与Project Professional的集成字段
		
用户可以象使用Office Excel一样,使用Project Professional连接TFS,将数据下载到本地修改,并且发布到TFS服务器上,如果你习惯使用Project来计划你的项目,那么Pr ...
 
随机推荐
- OMG 在线思维导图都有开源的
			
my-mind在线思维导图 源代码: https://github.com/ondras/my-mind 演示地址: http://my-mind.github.io/ 试了一下,操作上还有些bug, ...
 - AC自动机---病毒侵袭持续中
			
HDU 3065 题目网址: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=110773#problem/C Description 小t ...
 - 利用PBfunc在Powerbuilder中使用https获取微信的AccessToken
			
在前篇中讲解了使用PBFunc在Powerbuilder自己进行http的GET和POST操作. 本篇简单用代码演示下https的微信AccessToken的获取: n_pbfunc_http lnv ...
 - HTML   Jquery
			
在<网页制作Dreamweaver(悬浮动态分层导航)>中,运用到了jQuery的技术,轻松实现了菜单的下拉.显示.隐藏的效果,不必再用样式表一点点地修改,省去了很多麻烦,那么jQuery ...
 - 【Android】开源项目UI控件分类汇总之Dialog
			
接前文ProgressBar:Android开发的宝库越来越多,我开发中有需要的组件,主要参考Trinea的大作Android开源项目分类汇总(包含了后面的绝大多数).CSDN上直接拿来用!最火的An ...
 - JS创建对象、继承原型、ES6中class继承
			
面向对象编程:java中对象的两个基本概念:1.类:类是对象的模板,比如说Leader 这个是泛称领导,并不特指谁.2:实例:实例是根据类创建的对象,根据类Leader可以创建出很多实例:liyi,y ...
 - javascript --- 设计模式之单体模式(一)
			
单体是一个用来划分命名空间并将一些相关的属性与方法组织在一起的对象,如果她可以被实例化的话,那她只能被实例化一次(她只能嫁一次,不能二婚). 单体模式是javascript里面最基本但也是最有用的模式 ...
 - javascript宿主对象之window.history
			
window.historys属性允许我们操作同一个浏览器回话中的已访问页面,例如我们可以看到在这之前我们浏览页面的数量: window.history.length 由于隐私保护,我们无法获取这些页 ...
 - 公司outing选项
			
Sign up: 2014 Summer Outing 请您从以下三个方案中选择您最感兴趣的一个项目, 如果您不能参加此次summer outing, 请选择"遗憾放弃"- ...
 - Force.com微信开发系列(八)生成带参数的二维码
			
为了满足用户渠道推广分析的需要,公众平台提供了生成带二维码的接口.使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送.目前有两种类型的二维码,分别是临时二维码和永久二维码 ...