JIRA实践基础(2):JIRA-Software的Rest API

Jira提供了较为完善的RestAPI,这篇文章来看一下Jira-Software所提供的Rest API功能, 并提供curl的方式进行project的确认,并在已经创建的project中创建issue。

事前准备

项目 说明
Jira类型 Jira-Software
安装方式 本地
版本 7.11
Mysql版本 5.7.18

主要功能

Jira-Software相关的Rest API的前缀为/rest/api/2/,主要功能如下:

  • 权限:获取当前用户的权限和全部权限
  • 应用属性:获取属性信息
  • 应用角色: 对Jira的应用角色提供GET和PUT操作
  • 附件: 对附件提供获取和删除等操作
  • 审计记录:提供对审计记录的获取和添加的功能
  • 头像: 对头像提供获取/保存/创建的操作
  • comment属性: 对comment属性相关的操作(试验阶段)
  • 组件操作:对组件的增删改查操作
  • 配置:获取配置信息
  • 用户自定义字段选项:获取用户自定义字段选项
  • 仪表板:获取仪表板列表以及详情信息
  • 仪表板项目:对于仪表版项目属性的增删改查操作
  • 字段:创建用户自定义字段或者获取字段
  • 过滤器:对filer的增删改查以及共享权限的增删改查与设定进行查询
  • group:对group进行增删改查,注意直接获取group的api已经deprecated了,另外还有添加用户以及对组中用户的操作
  • groups:提供与gourp picker和groupuserpicker关联的操作
  • issue: 对issue提供增删改查操作,同时对相关的comment也提供增删改查,还有issue的分配,以及投票相关的操作都可以进行操作,同时可以对worklog进行增删改查。可以对issue进行添加附件的操作,可对issue的属性进行操作(试验阶段)
  • issue的子任务:对issue的子任务提供获取和移动以及确认是否可以移动的功能
  • issueLink:对issuelink提供创建/删除/获取的功能
  • issuelink类型:提供增删改查的功能
  • issue类型:提供增删改查的功能
  • issue类型属性:提供增删改查的功能(试验阶段)
  • 自动补齐:获取查询相关的自动补齐信息
  • jmx监控:获取监控数据/开始监控/停止监控
  • 个人偏好:获取/设定/删除个人偏好设定
  • 当前用户操作:对当前登录的用户提供获取用户信息/更新用户信息/变更个人密码的功能
  • 密码策略:获取/创建/更新策略
  • 权限设定:对权限设定相关的增删改查操作
  • 优先度:获取优先度信息
  • 优先度设定:对优先度设定的增删改查操作(试验阶段)
  • 项目:对项目的增删改查等操作
  • 项目属性:对项目属性的增删改查操作(试验阶段)
  • 项目角色:对项目角色的增删改查操作(试验阶段)
  • 项目类型:对项目分类进行增删改查操作
  • 索引操作:获取索引信息,进行reindex操作,获取reindex的进度信息
  • 角色:对角色提供增删改查的操作
  • Screen:对jira的Screen提供各种增删改查操作
  • upgrade:提供开始升级以及确认结果的功能
  • 用户:提供对用户相关的各种增删改查操作(创建/修改/删除都为试验阶段)
  • 用户属性:对用户属性提供增删改查操作
  • 版本:对版本提供各种增删改查操作
  • workflow:对工作流以及设定提供各种增删改查操作
  • 工作日志:对工作日志获取功能
  • 会话:提供登录Login/确认/退出Logout相关的会话操作

rest api

使用方式

Jira-software提供OAuth和HTTP BASIC方式进行REST API操作。在这篇文章中我们直接使用HTTP BASIC的用户名/密码方式进行REST API操作。

使用格式

格式:http://host:port/context/rest/api-name/api-version/resource-name

确认项目信息

确认一下在安装和设定Jira时所创建的jiratest的项目信息

[root@platform ~]# curl -u liumiao:liumiao http://192.168.163.118:32901/rest/api/2/project 2>/dev/null|jq .
[
  {
    "expand": "description,lead,url,projectKeys",
    "self": "http://192.168.163.118:32901/rest/api/2/project/10000",
    "id": "10000",
    "key": "JIR",
    "name": "jiratest",
    "avatarUrls": {
      "48x48": "http://192.168.163.118:32901/secure/projectavatar?avatarId=10324",
      "24x24": "http://192.168.163.118:32901/secure/projectavatar?size=small&avatarId=10324",
      "16x16": "http://192.168.163.118:32901/secure/projectavatar?size=xsmall&avatarId=10324",
      "32x32": "http://192.168.163.118:32901/secure/projectavatar?size=medium&avatarId=10324"
    },
    "projectTypeKey": "software"
  }
]
[root@platform ~]# 

确认issuetype

确认issuetype的信息, 确认bug类型的id为10004,接下来将创建一个bug类型的issue到jiratest项目中

[root@platform ~]# curl -u liumiao:liumiao http://192.168.163.118:32901/rest/api/2/issuetype 2>/dev/null|jq .
[
  {
    "self": "http://192.168.163.118:32901/rest/api/2/issuetype/10002",
    "id": "10002",
    "description": "A task that needs to be done.",
    "iconUrl": "http://192.168.163.118:32901/secure/viewavatar?size=xsmall&avatarId=10318&avatarType=issuetype",
    "name": "Task",
    "subtask": false,
    "avatarId": 10318
  },
  {
    "self": "http://192.168.163.118:32901/rest/api/2/issuetype/10003",
    "id": "10003",
    "description": "The sub-task of the issue",
    "iconUrl": "http://192.168.163.118:32901/secure/viewavatar?size=xsmall&avatarId=10316&avatarType=issuetype",
    "name": "Sub-task",
    "subtask": true,
    "avatarId": 10316
  },
  {
    "self": "http://192.168.163.118:32901/rest/api/2/issuetype/10001",
    "id": "10001",
    "description": "Created by Jira Software - do not edit or delete. Issue type for a user story.",
    "iconUrl": "http://192.168.163.118:32901/images/icons/issuetypes/story.svg",
    "name": "Story",
    "subtask": false
  },
  {
    "self": "http://192.168.163.118:32901/rest/api/2/issuetype/10004",
    "id": "10004",
    "description": "A problem which impairs or prevents the functions of the product.",
    "iconUrl": "http://192.168.163.118:32901/secure/viewavatar?size=xsmall&avatarId=10303&avatarType=issuetype",
    "name": "Bug",
    "subtask": false,
    "avatarId": 10303
  },
  {
    "self": "http://192.168.163.118:32901/rest/api/2/issuetype/10000",
    "id": "10000",
    "description": "Created by Jira Software - do not edit or delete. Issue type for a big user story that needs to be broken down.",
    "iconUrl": "http://192.168.163.118:32901/images/icons/issuetypes/epic.svg",
    "name": "Epic",
    "subtask": false
  }
]
[root@platform ~]#

创建issue

创建一个bug类型的issue与jiratest项目进行关联,首先准备json文件

[root@platform ~]# cat issuetest.json 
{
    "fields": {
       "project":
       {
          "id": "10000"
       },
       "summary": "Test Issue for this project.",
       "description": "Create issue for specified project by using Rest Api",
       "issuetype": {
          "id": "10004"
       }
   }
}
[root@platform ~]# 

创建issue, 从返回的结果看到了KEY为JIRA-24的结果

[root@platform ~]# curl -u liumiao:liumiao -X POST --data @issuetest.json -H "Content-Type: application/json" http://192.168.163.118:32901/rest/api/2/issue/ |jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   346    0    90  100   256     93    265 --:--:-- --:--:-- --:--:--   265
{
  "id": "10023",
  "key": "JIR-24",
  "self": "http://192.168.163.118:32901/rest/api/2/issue/10023"
}
[root@platform ~]#

从页面上也看到了同样的信息
这里写图片描述

参考文献

https://docs.atlassian.com/software/jira/docs/api/REST/7.11.0/
https://developer.atlassian.com/server/jira/platform/jira-rest-api-examples/

猜你喜欢

转载自blog.csdn.net/liumiaocn/article/details/81301550
今日推荐