初探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 ...
随机推荐
- LeetCode130:Surrounded Regions
题目: Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A region is capt ...
- Windows nexus 启动失败
现象: nexus Windows系统服务安装成功,但启动失败 D:\nexus-2.10.0-02-bundle\nexus-2.10.0-02\bin>nexus.bat Usage: ne ...
- [moka同学代码]PHP初级知识:上传文件源码
1.目录结构
- IIS在默认情况并不支持对PUT和DELETE请求的支持
IIS在默认情况并不支持对PUT和DELETE请求的支持: IIS拒绝PUT和DELETE请求是由默认注册的一个名为:“WebDAVModule”的自定义HttpModule导致的.WebDAV的全称 ...
- Android5.0新特性——阴影和剪裁(shadow)
阴影和剪裁 View的z属性 Material Design建议为了凸显布局的层次,建议使用阴影效果,并且Android L为了简化大家的工作,对View进行了扩展,能使大家非常方便的创建阴影效果: ...
- [程序人生]前途无"亮‘’的大学
转眼之间就到大四了,今天晚上很迷茫,很纠结,想了好多,好多,真的,长大之后,自从第一次失恋之后,第一次会想到这么的多. 嗯,先自我介绍哈吧,我是从云南的大山里走出来的孩子,什么样的大山,就是到 ...
- xscript脚本
最近看<游戏脚本高级编程>,然后顺便把里面实现的虚拟机,汇编器以及编译器手动用C++重写了一遍,原版书中提供的代码,风格不是很好,而且有几处BUG.我现在开源的代码中已经修复了BUG,而且 ...
- webpack学习(入门基础)
webpack的学习webpack是什么?1:加载模块(将JS.sass/less.图片等作为模块来处理使用) 2:进行打包 webpack的优势?1:webpack以commonJS(JS的规范)的 ...
- Sharepoint 2013 关于"SPChange"简介
在SharePoint中,我们经常会需要获取那些改变的项目,其实api为我们提供了SPChange对象,下面,我们通过列表简单介绍下这一对象. 1.创建一个测试列表,名字叫做“SPChangeItem ...
- bootstrap 学习笔记
bootstrap作为当下的流行框架不知道它怎么能行呢? 之前也看过好多bootstrap的网上教程,可是发现光看真的记不住,说起来也真是忧桑~重点还是要自己做才是真正的印象深刻.后来我发现解析模板是 ...