初探Team Foundation Server (TFS) 2015 REST API

【软件逆向学习记录】x64dbg调试器入门2:主调试窗口功能及字符串搜索功能介绍 在x64dbg中, ​​CPU视图 是调试过程中最核心的界面,通常被称为​​主调试窗口​​或​​调试视图​​,总体分为四个区域,代码区(反汇编),数据区(内存窗口),寄存器区和堆栈区,详细位置如下图:示例数据代码区最左侧为内存地址,第二块区域为程序代码值,原始程序代码经编译和汇编后变为二进制机器码存储在计算机中,调试器将其展示为易于阅读的十六进制,第三块区域是机器码反汇编后的汇编代码,最右侧为代码的注释窗口,有一些原始的注释,也可以自己添加注释PS:汇编和反汇编解释。 阅读详情

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

实验室LIMS系统选型指南:从赛默飞到金现代,5大主流方案横评 本文深入分析了实验室LIMS系统选型的5大核心维度,包括架构选择、行业适配性、合规性设计、智能化程度和成本模型。通过对比赛默飞、金现代等主流厂商的优劣势,提供实战避坑策略,帮助实验室管理者做出明智决策,提升运营效率和合规水平。 阅读详情

相关推荐

TFS API 文档

很实用的TFS API,chm格式的,方便查阅

Team Foundation ServerTFSAPI包装器

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

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

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

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的博客 1163

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

使用Postman验证TFS Rest API

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

weixin_30692143的博客 286

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

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

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

微软 TeamFoundation 服务器秘籍(二)

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

龙哥盟 1903

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

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

weixin_30498921的博客 218

Java开源在线考试系统怎么选?从技术选型到落地部署的完整指南

Java开源在线考试系统怎么选?本文从技术选型、核心功能、部署运维、二次开发等维度,梳理了Java开源在线考试系统的选型要点。

麦塔在线考试培训系统 355

大数据 之 Snappy

【代码】大数据 之 Snappy。

zhixingheyi_tian的博客 188

Spring WebFlux 适配达梦新方案|dm‑r2dbc:Netty 异步传输的实验性 R2DBC 驱动

dm‑r2dbc 是面向达梦 DM8 的实验性 R2DBC 驱动,混合架构:Netty 异步网络传输层 + JDBC 驱动协议编解码复用。核心思路:不去逆向达梦私有协议二进制报文,直接复用达梦 JDBC 驱动内部已经成熟的编解码逻辑,通过反射替换 JDBC 内部默认阻塞 Socket 传输实现,替换为 Netty NIO 异步通道,实现真正异步非阻塞网络 IO。

jinyuttt的专栏 298

Spring AI RAG管道构建与优化

<think>我们只需要根据给定的内容生成摘要(≤150字)。给定内容较长,但核心是Spring AI RAG管道构建与优化,涉及文档加载、分割、嵌入、存储、检索、生成等。摘要应高度概括。 注意用户要求“根据以下内容,生成≤150字的文章摘要”。内容提供了代码等细节,但摘要需抓住要点。 写出摘要,字数≤150。</think>摘要:本文深入讲解Spring AI RAG管道的构建与优化,涵盖文档加载、分割、嵌入、存储、检索到生成的全流程。详细展示了多源文档加载(PDF、网页、JSON)、多种分割策略(按页、

BADAO_LIUMANG_QIZHI的博客 224

41面向对象(高级)-抽象类

当父类的某些方法,需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类。

weixin_52770734的博客 380

商超智能运营如何落地?从系统架构到实战避坑的完整技术路径

3. **多端交互展示层**:需覆盖顾客使用的**小程序、APP及H5公众号**,以及员工使用的管理后台。答:在应用层引入**适配器模式**。在项目启动时,应强制要求供应商或自研团队产出**部署文档**(含环境变量清单)和**二次开发文档**(含核心流程时序图),确保后续维护不受限于个人。- **多租户插件**:MyBatis Plus的`TenantLineInnerInterceptor`可实现SQL层面的自动拼接`store_id`条件,防止开发者因SQL编写疏漏导致的数据越权。

weixin_56812938的博客 539

Java的AI生成式编程工具落地流程

针对Oracle数据库操作场景,让AI自动生成MyBatis-plus的CRUD代码,同时适配Oracle特有的JSON_TABLE、XMLTABLE等高级函数语法,避免手写SQL的语法错误。利用AI的全链路生成能力,快速搭建AI问答机器人、智能风控等Java AI应用原型,整合Stanford CoreNLP、Elasticsearch等组件,大幅缩短新业务的落地周期。调试排障阶段‌:把报错堆栈信息直接粘贴给AI,它会结合本地代码上下文定位根因,同时给出可直接运行的修复代码片段,大幅降低Bug排查耗时。

chinalog的专栏 147

电商推返模式的技术架构与系统落地实践

成功的电商推返模式系统,本质是。

weixin_42804741的博客 194

ms12-020 Windows6.1-KB2621440-x64-KB2667402-v2-x64.rar

Windows6.1-KB2621440-x64.msuWindows6.1-KB2667402-v2-x64.msu

上一篇: 使用Team Explorer Everywhere (TEE) 2015 SDK获取团队项目的签入策略
下一篇: Team Foundation Server 2015(Update 1)集成 SharePoint Server 2013
Azure DevOps
博客等级 码龄5年 219粉丝 296原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值