标签:
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 张洪君
初探Team Foundation Server (TFS) 2015 REST API
标签:
原文地址:http://www.cnblogs.com/danzhang/p/5039454.html