Jira@Java

338 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第12天,点击查看活动详情 >>

问题描述: 很奇怪,也很幸运,最近接触了莫名奇怪地面向工具开发,本篇文章给大家介绍一个我最近面向地一款工具,那相信大家都用过一个项目管理工具 Jira, 这里呢 就跟大家介绍一下我这边所用到的一些面向 Jira 开发地一些接口 以及API。

业务场景: 有一个电子邮箱是用来专门接收 Support 的账户 ,那么我们需要从这个账户里获取到 所有需要Support的支持的电子邮件去创建 Jira 并且 将其附件上传至该 Jira Issue,首先是查询项目中是否已经含有相同summary的issue 如果 含有的话就不再去重复创建,如果不存在就重新创建新的issue到Jira项目。

  • 需要接口及调用方式:
    • 创建Issue接口:
      // 封装创建Jira请求体
      JiraRequest jiraRequest=new JiraRequest()
              .setFields(new JiraFields()
                      .setIssuetype(new JiraIssuetype().setName("Bug"))
                      .setAssignee(new JiraAssignee().setName("peate"))
                      .setProject(new JiraProject().setKey("PEATE"))
                      .setDescription("peate boy desc")
                      .setSummary("peate boy summary")
              );
      // 发送请求
      HttpResponse response = Unirest.post("http://ip:port/rest/api/2/issue/")
              .basicAuth("username","pwd")
              .header("Accept", "application/json")
              .header("X-Atlassian-Token", "no-check")
              .header("Content-Type", "application/json")
              .body(jiraRequest)
              .asJson();
      
    • 搜索Issue接口:
      String jql="project = PEATE and summary ~ 'summary'";
      HttpResponse<JsonNode> response = Unirest.get("http://ip:port/rest/api/2/search/")
              .basicAuth("username","pwd")
              .header("Accept", "application/json")
              .queryString("jql", jql)
              .asJson();
      
    • 上传附件接口:
      // fileList 为 List<File>,附件作为 multipart/form-data 发布 ,field必须是"file"
      // {issueIdOrKey}为Issue 的Key或Id
      HttpResponse response = Unirest.post("http://ip:port/rest/api/2/issue/{issueIdOrKey}/attachments"
      )
           .basicAuth("username","pwd")
          .header("Accept", "application/json")
          .header("X-Atlassian-Token", "no-check")
          .field("file", fileList)
          .asJson();
      

这里所用到maven依赖也给大家贴心的贴出来:

<dependency>
    <groupId>com.konghq</groupId>
    <artifactId>unirest-java</artifactId>
    <version>3.11.11</version>
</dependency>

其实Jira的开发接口还有很多很多,在这个业务中我这边用到了三个,还有很多接口可以点击这里进行查看,当然也给大家准备了面向Jira的开发文档:developer.atlassian.com/cloud/jira/… ,我在开发这个的时候 是没有 少走弯路这里就给大家亲手总结了一下,亲测好用,方便快捷,少走弯路。 也欢迎大家关注 CoffeeCup ,Bye!