前言:“JIRA是一款优秀的问题跟踪管理软件工具,可以对各种类型的问题进行跟踪管理,包括缺陷、任务、子任务、需求、sprint等。公司为了提高测试效率都会测试平台化,那么就会出现跨平台使用jira数据的问题。最近一段时间我们就来讨论下如何通过jira api达到我们的目的”

想要获取到jira上的数据,首先我们需要知道是那个project、project下的那个board以及那一个sprint。本文就介绍如何获取project、board和sprint.

一、获取project

jira上project一般都会比较多,如下图,我们需要知道每个project的key或者ID,这是操作project api的基础。


public static JSONArray getJiraProjects() {//httpClient 自己封装的http接口调用HttpClientResponse clientResponse = httpClient("get", "http://you jira address:port/rest/api/2/project", "");if (clientResponse != null) {logger.info("获取jira上project成功");//已json数组的方式返回return JSONArray.fromObject(clientResponse.getResponseBody());}return null;}//url 可使用参数如下expand扩充字段、recent返回的个数、properties返回的属性
//http://jira.timevale.cn:8081/rest/api/2/project?expand=projectKeys,description,url,lead&recent=2&properties=key,id

//返回的数据结构如下,其中id和key会在后面的api中使用,需要保存
[{"expand": "description,lead,url,projectKeys","self": "http://you jira address:port/rest/api/2/project/12345","id": "12345",//后续需要使用"key": "AI",//后续需要使用"name": "AI项目组","avatarUrls": {"48x48": "http://you jira address:port/secure/projectavatar?avatarId=10324","24x24": "http://you jira address:port/secure/projectavatar?size=small&avatarId=10324","16x16": "http://you jira address:port/secure/projectavatar?size=xsmall&avatarId=10324","32x32": "http://you jira address:port/secure/projectavatar?size=medium&avatarId=10324"},"projectTypeKey": "software"}
]

二、获取board

有时候一个project下面可能存在多个board,如下图,那么我们就需要知道具体是那个board.

//入参projectKey是步骤一中返回的id或者keypublic static String getBoardId(String projectKey) {String boarId = "";HttpClientResponse boardResponse = httpClient("get", "http://you jira address:port/rest/agile/1.0/board?projectKeyOrId=" + projectKey, "");if (boardResponse != null && "200".equals(boardResponse.getStateCode())&& boardResponse.getResponseBody() != null) {JSONObject jsonObject = JSONObject.fromObject(boardResponse.getResponseBody().toString());//获取项目看板数组JSONArray boardArray = jsonObject.getJSONArray("values");if (boardArray != null && boardArray.size() > 0) {for (int i = 0; i < boardArray.size(); i++) {//默认使用项目名称+ board作为项目看板JSONObject object = boardArray.getJSONObject(i);if ((projectKey + " board").equals(object.getString("name")) || (projectKey + " Board").equals(object.getString("name"))) {//返回看板IDboarId = object.getString("id");}}//没有满足要求的,设置第一个if (StringUtils.isBlank(boarId)) {boarId = boardArray.getJSONObject(0).getString("id");}}}return boarId;}//URL 中可使用参数startAt表示开始的位置、maxResults表示返回的数量//http://you jira address:port/rest/agile/1.0/board?projectKeyOrId={projectKeyOrId}&startAt=1&maxResults=1
//返回结果如下,其中的id在获取sprint时需要使用,需要保存
{"maxResults": 50,"startAt": 0,"isLast": true,"values": [{"id": num1,//后续需要使用"self": "http://you jira address:port/rest/agile/1.0/board/num1","name": "测试","type": "kanban"},{"id": num2,"self": "http://you jira address:port/rest/agile/1.0/board/num2","name": "医签宝","type": "scrum"}]
}

三、获取sprint

项目的一个迭代对应到jira一般就是一个sprint,如下图,获取到sprint id就可以获取到sprint关联的需求、任务、缺陷等

根据board id 获取sprint代码如下

//入参boardId就是第二步中获取的id
public static List<TmsJiraSpringModel> getSpring(String boardId) {​List<TmsJiraSpringModel> result = new ArrayList<>();HttpClientResponse boardResponse = httpClient("get", "http://you jira address:port/rest/agile/1.0/board/" + boardId + "/sprint?state=future,active", "");if (boardResponse != null && "200".equals(boardResponse.getStateCode())&& boardResponse.getResponseBody() != null) {​JSONObject jsonObject = JSONObject.fromObject(boardResponse.getResponseBody().toString());//获取SpringJSONArray boardArray = jsonObject.getJSONArray("values");if (boardArray != null && boardArray.size() > 0) {for (int i = 0; i < boardArray.size(); i++) {//自己封装的对象TmsJiraSpringModel springModel = new TmsJiraSpringModel();JSONObject object = boardArray.getJSONObject(i);if (object != null) {springModel.setSpringId(object.getString("id"));springModel.setSpringName(object.getString("name"));result.add(springModel);}}}}return result;}
//url 可使用参数startAt表示开始的位置、maxResults表示返回的数量、state表示sprint的状态
//http://you jira address:port/rest/agile/1.0/board/{boardId}/sprint?state=future,active&startAt=1&maxResults=1
//返回结果如下, 其中id为sprint id后面会使用
{"maxResults": 2,"startAt": 1,"isLast": false,"values": [{"id": num1,//后续需要使用"self": "http://you jira address:port/rest/agile/1.0/sprint/num1","state": "active","name": "【智能人事】一期项目","startDate": "2020-12-07T14:10:58.582+08:00","endDate": "2021-01-15T02:10:00.000+08:00","originBoardId": xxx},{"id": num2,"self": "http://you jira address:port/rest/agile/1.0/sprint/num2","state": "active","name": "企业合同权限迭代","startDate": "2020-12-16T10:11:24.631+08:00","endDate": "2020-12-29T10:11:00.000+08:00","originBoardId": xxx}]
}

附录:

jira api地址:
1、https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#about
2、https://developer.atlassian.com/cloud/jira/software/rest/intro/#introduction
更多文章请关注公众号

(一)Jira Api对接:获取项目和sprint相关推荐

  1. Harbor API整理:获取项目下的所有镜像

    获取项目下的所有镜像: http://{ip:port}/api/v2.0/projects/test/repositories?page_size=100000

  2. 红孩子VS腾讯合作项目,API对接被评为腾讯优秀案例

    随着Redbaby网站 对外合作逐渐加深,各种数据接口越来越多,提供接口的方式也各不相同.不同的接口,也常常面临一些相同的需求,如访问频率控制.国际化支持等,各个接口解决的办法也各不相同. 为了减少重 ...

  3. BIM 360 Glue API: 用cURL或PostMan实现登陆和获取项目列表的功能

    BIM 360 Glue API 真正开发应用之前,使用工具来试调用RESTful API是必由之路,它可以帮助我们更加清晰直观的理解我们要使用的API. 下面我们用一个简单的例子来看看如何用cURL ...

  4. jira以及jira API简单介绍

    最近需要预言:是否可以通过jira API实现用例管理,对jira的应用.API.扩展等进行了一定的了解. Jira介绍: jira是目前比较流行的基于Java架构的管理系统(Atlassian公司支 ...

  5. java金蝶星空云金蝶Java 对接 金蝶云星空 接口 对接 金蝶API 对接 金蝶 接口 解决 会话失效 问题 会话已失效,请重新登录

    java金蝶星空云金蝶Java 对接 金蝶云星空 接口 对接 金蝶API 对接 金蝶 接口 解决 会话失效 问题 会话已失效,请重新登录 1.准备工作 1.1 接口调用账户 1.2 下载 金蝶星空云 ...

  6. API对接网关 code review

    API对接网关 code review 一.URL前后对比 之前对外的接口URL:http://oldXXX/functionName?data=args 对接网关之后URL:http://newXX ...

  7. LittleVGL (LVGL)干货入门教程二之LVGL的输入设备(indev)API对接。

    LittleVGL (LVGL)干货入门教程二之LVGL的输入设备(indev)API对接 前言: 阅读前,请确保你拥有以下条件: 你已经完成"显示API"的移植. 你已经实现了一 ...

  8. 顺丰快递单号查询接口物流路由跟踪信息快递鸟api对接教程

    目录 1.完成前期准备工作 2.API接口 3.请求参数(Headers) 4.请求参数(Body) 5.返回参数(Return) 6.请求完整报文(示例) 7.成功返回报文(示例) 8.失败返回报文 ...

  9. 技术分享 | 跨平台API对接(Java)

    深入了解测试过程中被测系统的架构与数据流,有助于理解业务逻辑,梳理业务用例以及促进部门协同. 更深的理解业务逻辑是指要分析公司是做什么的,公司的重要的商务决策是什么,公司内部数据流是怎么运行的,有哪些 ...

最新文章

  1. Intellij Idea创建一个简单的java项目
  2. java 年计算_JAVA计算年/周的问题
  3. 苹果笔记本电脑 javaee安装_苹果下周举行发布会 重磅推出新款MacBook Air和MacBook Pro...
  4. [转]算术编码+统计模型=数据压缩 - 第二部分:统计模型
  5. Java笔记12-函数式接口
  6. CentOS7环境下搭建Kafka
  7. python pyqt教程_『开发技巧』PyQt5入门教程
  8. yum更新指定的软件
  9. python语法学习第九天--else和with语句
  10. Putty连接TPYBorad v102 开发板教程
  11. .net from 关闭事件_libVLC 事件机制
  12. java 贪吃蛇 源码+图片
  13. 谷歌google搜索打不开、谷歌gmail邮箱及相关服务无法登录的解决的方法
  14. 用Python的statsmodels包做前向逐步回归
  15. Cell Stem Cell | 动物所刘光慧等显示年轻血液可逆转衰老进程
  16. 防止恶意调用API接口
  17. SpringBoot+Vue实现前后端分离的宠物医院管理系统
  18. js监听元素尺寸变化
  19. 为什么程序员的工资比其他行业高这么多?
  20. “H5结婚请柬电子版”制作攻略

热门文章

  1. 《计算机网络》五层各层结构——简单认识。五层协议结构,OSI结构
  2. 【创作赢红包】Prompt Learning的基本思想和常用方法
  3. 区块链技术指1.2 区块链体验
  4. Django学习02:ListView、模板语言、QuerySet
  5. 对LOAM算法原理和代码的理解
  6. pandas读写文件
  7. 从零开始手写vue项目的webpack基础配置
  8. Js中的onblur和onfocus事件
  9. 美依礼芽破圈!小红书数据解读,如何拨动二次元心弦?
  10. html5时间线图片自动轮播,js实现自动播放匀速轮播图