初探Team Foundation Server (TFS) 2015 REST API

TFS API 文档 很实用的TFS API,chm格式的,方便查阅 立即下载

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

tfs:Microsoft TFS API Python客户端 Microsoft TFS Python库(TFS API Python客户端) 介绍 Microsoft Team Foundation Server Python库是可以与Microsoft TFS工作流和工作项一起使用的Microsoft TFS API Python客户端。 阅读完整的文档: : 安装 pip install dohq-tfs 立即下载

相关推荐

Team Foundation Server(TFS)API包装器

一个简单的包装程序,用于封装Microsoft Team Foundation Server(TFS)客户端API的公开功能

TFS API使用

最近安装了TFS2010进行代码管理,感觉比SVN好用点! Creating a Build Definition using the TFS 2010 API In this post I will show how to create a new build definition in TFS 2010 using the TFS API. When creating a ...

angmangz75888的博客 446

微信小程序实现锚点效果 scroll-view的scroll-into-view属性

小程序中实现锚点效果,可以直接使用scroll-view的scroll-into-view属性就可以实现锚点效果,比较方便简单。那么需要用到scroll-view那些参数呢,下面具体讲讲:效果展示: wxml **注意:**viewid值是动态的,通过setData设置即可。js wxss......

FaxMiao的博客 5450

tfs二次开发-利用tfs api做查询

参考地址:https://msdn.microsoft.com/en-us/library/bb130306(v=vs.120).aspx You can query for bugs, tasks, other types of work items, and links between work items by using one of theWorkItemStore.Query...

weixin_30340353的博客 1164

用Java和MQTT搞定大疆无人机自动巡检:一个真实机场项目的踩坑与优化记录

本文详细介绍了如何利用Java和MQTT协议实现大疆无人机在机场自动巡检系统的开发与优化。通过实战案例分享系统架构设计、通信协议选型、断线重连机制及数据通道优化等关键环节,帮助开发者解决GPS信号漂移、MQTT消息风暴等典型问题,提升系统性能和可靠性。

weixin_30275415的博客 495

三维(点云)语义分割概述以及方法总结

语义分割 语义分割需要两部分 classification: 需要全局信息 segmentation:更加依赖全局信息和局部信息 一般的网络结构是: 提特征-特征映射-特征图压缩(降维)-全连接-分类,其实就是encoder-decoder的过程, 比如在二维的的pspnet,fcn等等 0. 三维表示的数据结构 Point cloud 无序性 点云实际上是无序的,比如有8个点云,你放到...

renhaofan的博客 3万+

Team Foundation API - 编程控制文件版本

Team Foundation Server (TFS)工具的亮点之一是文件的版本控制。在TFS中实现文件版本控制的类型: Microsoft.TeamFoundation.Client.TfsTeamProjectCollection; Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer; Microsof...

weixin_30498921的博客 219

HFSS线圈仿真避坑指南:从建模到寄生参数分析的完整流程

本文详细介绍了HFSS线圈仿真的完整流程,从精准建模到寄生参数优化,特别针对Ansys Electronics Desktop用户提供实用指南。涵盖线圈几何构建、材料属性配置、端口激励设置及寄生电阻与电感分析等关键步骤,帮助工程师避免常见错误,提升仿真精度与效率。

weixin_29209801的博客 551

使用Postman验证TFS Rest API

概述你可能已经了解到,TFS自2015版本发布以来,开始支持通过REST API的方式提供接口服务,第三方平台可以通过通用的HTTP协议访问TFS系统,获取数据、请求编译等。REST API在原有.NET和JAVA SDK的基础上,大幅提高的TFS系统的扩展性。任何支持HTTP访问的客户端或者设备都可以实现与TFS系统的集成。我们在使用TFS的REST API实现集成开发的过程中,往往希望首先测试...

weixin_30692143的博客 287

MMRotate 详细使用教程

MMRotate 详细使用教程 做旋转目标检测,怎么可以不知道如何使用MMRotate呢! github链接: https://github.com/open-mmlab/mmrotate 1 安装 创建虚拟环境并激活 conda create -n mmrotate python=3.7 -y conda activate mmrotate 安装 PyTorch 和 torchvision conda install pytorch torchvision -c pytorch 注意:确保

Sylvia_Lan的博客 1万+

【Unity-UGUI控件全面解析】| Layout自动布局组件详解

UGUI中有个自动布局组件Auto Layout,主要包含下面几个模块(点击可进入官方文档下查看描述): 自动布局 布局元素 (Layout Element) 水平布局组 (Horizontal Layout Group) 垂直布局组 (Vertical Layout Group) 网格布局组 (Grid Layout Group) 内容大小适配器 (Content Size Fitter) 自动布局系统 基于布局元素和布局控制器的概念。一个布局元素是具有矩形变换以及其他可选组件的游戏对象。布局元素对自身

努力前行,总会成为自己心中的那道光 2万+

#一周五# VS2015 CTP6, TFS2015 CTP1更新,老衣的开发工具汇总,2015 MVP 社区巡讲

又到周五,这一周博主我工作效率极高,每天更新博客一篇,《快速创建网站》系列已经进程大半了,希望这个系列能够对大家有所帮助。今天周五了,博主要休息一下,就给大家唠叨一下这段时间都发生了什么。Visual Studio 2015快发了,TFS 2015也要来了,看看有什么新功能。老衣的开发工具汇总,上百种工具看花眼。技术类微信号推荐,作为技术人员不能错过。

徐磊 - 新浪微博@北京的201个蓝天 3920

《手把手教你修复过期K8s集群证书:记一次K8s集群起死回生实录》

今天本想打开半年前部署的K8s测试集群跑个Demo,结果`kubectl`直接报错`certificate has expired`!作为一名云原生老司机,我决定把这次'抢救'过程记录下来,手把手带大家解决这个运维常见问题。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3781

微软 TeamFoundation 服务器秘籍(二)

软件团队时刻面临着交付更多、更快的压力。最终用户期望软件能正常工作。低质量的软件是不可接受的。但你可能会问,什么才是正确的质量标准呢?质量是一个非常主观的概念;因此,团队需要就其软件的质量标准达成一致。无法定义质量的团队通常会以覆盖率为测试目标,而非关注质量本身。Team Foundation Server 中的工具包提供了手动和自动化测试的工具。MTM),首次在 TFS 2010 中引入,使测试人员能够计划、跟踪和运行手动、探索性以及自动化测试。

龙哥盟 1928

实操微信支付,适合第一次接通微信支付的同学

我的实际操作命令如下:就会生成图3中多出来的file文件夹,/Users/camel/cert/xxxxxx_cert/file/wechatpay_5A4xxxxxxxxxx9.pem,wechatpay_xxxxx5A4849E9.pem就是微信支付平台证书,也是程序真正需要的。•注意:我的操作说明,我是把下载好的 CertificateDownloader.jar 文件,放在了解压证书的目录里(图3)。//下面的静态参数要仔细看下面的解释,否则只会调用别人写好的方法,压根学不会0-1接入微信支付。

wjianwei666的专栏 525

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Team Foundation API - 编程访问 WorkItem

Team Foundation Server (TFS)工具的亮点之一是管理日常工作项, 工作项如Bug, Task,Task Case等。 使用TFS API编程访问TFS服务器中的工作项, 步骤如下: 1。 准备, 首先要明确TFS服务器的URL, TFS服务器访问就像访问网站。需要通过一个网络地址。 其次要了解TFS中工作项相关组织结构: Microsoft.TeamFoundat...

weixin_30892763的博客 251

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

[VSTS] 配置 Team Foundation Server 团队权限最佳实践

在之前的文章:[VSTS] 从零开始 Team Foundation Server 2010 安装配置详细图文教程中,我们介绍了详细的安装及配置TFS主体环境,接下来我们开始配置团队成员的权限,这里我以一些最佳实践方式来给大家演示配置过程,如果大家看到本文后觉得有更好的配置思路可以再沟通。 (以下图片如果看不清楚请点击打开后方可看到大图) 1. 打开计算机管理: 2. 选择本地用户和组中的...

weixin_33806914的博客 551

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 304

第三篇 第 6 课

前置:第三篇第 1 课(stdx 引入),第二篇第 1 课(std.regex)。环境:仓颉 SDK 1.2.0。本文所有代码与输出均逐行实测。

weixin_41618057的博客 556

信创环境下PageOffice文档控件适配与实践

信创适配做到文档控件这一层,拼的已经不是"有没有国产版本",而是同一个功能在两类终端上是否真的等价。等价的标准很具体:同一次点击能得到同样的结果,同一份公文能得到同样的版式,同一个项目不需要维护两套代码。这背后是三件并不轻松的工作:服务端用一套接口同时支撑两类终端,客户端把两种系统与四种芯片的安装包分发清楚,文档内核层由产品侧跟着 WPS 的版本走。浏览器这一层的压力,则被收进了产品自己的窗口里——升级节奏由产品掌握,不再交给运气。

zi_wu_xian的专栏 333

【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端

上一篇讲了 MCP 的概念:标准协议、三大角色、M+N 替代 M×N。

nice_lcj520的博客 601

Java 集合容器高频面试题全解:HashMap 树化阈值、1.7 死循环与 ConcurrentHashMap 演进(2026 招聘 JD 真题复盘)

HashMap 树化阈值 8 的泊松分布依据、退化阈值 6 的防抖设计、JDK 1.7 头插成环死循环的排查与修复、1.8 尾插后为何仍线程不安全、ConcurrentHashMap 放弃分段锁的原因与 ForwardingNode 协作扩容、computeIfAbsent 死锁陷阱、大集合找重复的场景题选型,附三层追问链自测。题目来源为 38 期公开招聘 JD 样本与字节、拼多多、建行、美团、快手公开面经。

蒙眼过河 424

spdlog 同步日志库使用详解

spdlog是一个轻量级 C++ 日志库,支持同步日志、异步日志、多线程日志、日志文件轮转和自定义日志格式。对于嵌入式 Linux 应用开发,我建议先使用。它可以帮我们完成:日志级别过滤。时间戳和线程 ID 输出。日志格式化。终端和文件输出。多线程安全写入。日志文件按大小或时间轮转。我们不需要自己实现互斥锁、文件写入、日志格式化和轮转等底层功能。

zengjiajun2006的博客 1121

Java 多态 学习笔记

多态是面向对象编程的重要特性,指同一操作作用于不同对象时产生不同行为。其核心在于“父类引用指向子类对象”,结合方法重写实现运行时动态绑定。多态使代码更灵活、可扩展,如用Person p = new Student();统一处理各类人员注册,无需修改调用逻辑。但多态无法直接调用子类特有方法,需通过instanceof判断并强制转换。编译时看左边(类型),运行时看右边(实际对象),实现解耦与维护便利。

AA_AA114514的博客 369

JavaSE通关手册:数据类型与变量

代码无需额外处理,编译时编译器自动完成转换。

xys_678的博客 232
上一篇: 使用Team Explorer Everywhere (TEE) 2015 SDK获取团队项目的签入策略
下一篇: Team Foundation Server 2015(Update 1)集成 SharePoint Server 2013
Azure DevOps
博客等级 码龄6年 219粉丝 296原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值