简介

最近需要把一个Excel里的issues list全部到JIRA上create 一遍, 总不能手动创建百十来个issues吧, 本文讲述一下如果调用JIRA提供的Rest API 来自动创建issues.

下面是官网的一个例子,用curl 来创建的。

Request
  1. curl -D- -u fred:fred -X POST --data {see below} -H "Content-Type: application/json" http://localhost:/rest/api//issue/
Data
  1. {
  2. "fields": {
  3. "project":
  4. {
  5. "key": "TEST"
  6. },
  7. "summary": "REST ye merry gentlemen.",
  8. "description": "Creating of an issue using project keys and issue type names using the REST API",
  9. "issuetype": {
  10. "name": "Bug"
  11. }
  12. }
  13. }
Response
  1. {
  2. "id":"39000",
  3. "key":"TEST-101",
  4. "self":"http://localhost:8090/rest/api/2/issue/39000"
  5. }

下面我用Apache Http Client 写的Java 代码

  1. public static String executePostRequest(String url, String postBody) {
  2. ResponseHandler<String> handler = new BasicResponseHandler();
  3.  
  4. HttpPost httpPost = new HttpPost(url);
  5. httpPost.setHeader("Authorization", basic_auth);
  6. httpPost.setHeader("Content-type", "application/json");
  7. StringEntity entity = new StringEntity(postBody, "UTF-8");
  8. entity.setContentType("application/json;charset=UTF-8");
  9. httpPost.setEntity(entity);
  10. String responseBody = null;
  11. HttpResponse response = null;
  12. try
  13. {
  14. response = httpclient.execute(httpPost);
  15. responseBody = handler.handleResponse(response);
  16. } catch (IOException e)
  17. {
  18. // TODO Auto-generated catch block
  19. System.out.println(e.getMessage() + " status code: " + response.getStatusLine().getStatusCode());
  20. }
  21. String ticketNum = null;
  22. try
  23. {
  24. if (responseBody != null)
  25. {
  26. ticketNum = new JSONObject(responseBody).getString("key");
  27. }
  28. } catch (JSONException e)
  29. {
  30. // TODO Auto-generated catch block
  31. e.printStackTrace();
  32. }
  33. System.out.println("Ticket Number: " + ticketNum);
  34. return ticketNum;
  35. }

##转载注明出处:http://www.cnblogs.com/wade-xu/p/6096902.html

读取Excel的值 然后遍历create issue

  1.   private static final String BASE_URL = "http://jira.test.com/rest/api/2/issue";
  2. private static String basic_auth = "Basic ";
  3. private static CloseableHttpClient httpclient = null;
  4.  
  5. public static void main(String[] args)
  6. {
  7. String username = "wadexu";
  8. String password = "xxxxx";
  9. httpclient = HttpClients.createDefault();
  10.  
  11. basic_auth += Base64Util.encodeBase64String(username + ":" + password);
  12. System.out.println("basic_auth: " + basic_auth);
  13.  
  14. List<List<String>> recordList = ExcelReader.readFromExcel("C:/Users/wadexu/Desktop/issues.xlsx");
  15.  
  16. for(int i = 1; i < recordList.size(); i++) {
  17. createIssueViaSheet(recordList.get(i));
  18. }
  19. }
  20.  
  21. public static void createIssueViaSheet(List<String> list) {
  22.  
  23. String postBody = "{\"fields\": { \"project\": { \"key\": \"" + list.get(7) + "\" }, "
  24. + "\"summary\": \"This attribute" + list.get(0) + "has a serialization issue\", "
  25. + "\"description\": \"Please fix this issue. \", "
  26. + "\"issuetype\": {\"name\": \"Defect\"}, "
  27. + "\"versions\": [{\"name\": \"1234\"}], \"components\": "
  28. + "[{\"name\": \"" + list.get(6) + "\"}], \"customfield_10030\": "
  29. + "[{\"value\": \"Internal Issue\"}], \"customfield_10001\": {\"value\": \"New\"}, \"customfield_10002\": "
  30. + "{\"value\": \"3-Medium\"}}}";
  31.  
  32. String issueNumber = createIssue(postBody);
  33.  
  34. if (issueNumber != null && !"".equalsIgnoreCase(issueNumber)) {
  35. addWatchers(issueNumber, "\"wadexu\"");
  36. }
  37. }
  38.  
  39. public static String createIssue(String postBody) {
  40. return executePostRequest(BASE_URL, postBody);
  41. }

add watchers to JIRA issue is also a rest API provided by JIRA

  1. public static void addWatchers(String issueNumber, String postBody) {
  2. String url = BASE_URL + "/" + issueNumber + "/watchers";
  3. executePostRequest(url, postBody);
  4. }

My post body template as below:

  1. {
  2. "fields": {
  3. "project": {"key": "ABC"},
  4. "summary": "The attribute has a serialization issue",
  5. "description": "Please fix this issue.",
  6. "issuetype": {"name": "Defect"},
  7. "versions": [{"name": "1234"}],
  8. "components": [{"name": "ABC Service"}],
  9. "customfield_11030": [{"value": "Internal Issue"}],
  10. "customfield_10020": {"value": "New"},
  11. "customfield_10002": {"value": "3-Medium"},
  12. "customfield_11082": [{"value": "QA Landscape"}]
  13.  
  14. }
  15. }

这些fields 要注意,有得是多选, 有得单选, 加不加[] 很容易出错导致400 bad request

##转载注明出处:http://www.cnblogs.com/wade-xu/p/6096902.html

参考文档:

https://developer.atlassian.com/jiradev/jira-apis/jira-rest-apis

感谢阅读,如果您觉得本文的内容对您的学习有所帮助,您可以点击右下方的推荐按钮,您的鼓励是我创作的动力。

如何用 JIRA REST API 创建 Issue的更多相关文章

  1. PowerShell调用jira rest api实现jira统计自动化

    通过调用JIRA Rest web api实现统计自动化,首先进行登录模拟: $content = @{username='用户名';password='密码'} $JSON=$content|con ...

  2. PowerShell调用jira rest api实现对个人提交bug数的统计

    通过PowerShell的invoke-webrequest和net.client联合实现个人指定项目jira提交数的统计,其中涉及到了JSON对象的提交,代码如下: $content = @{use ...

  3. soapUI系列之—-07 调用JIRA Rest API接口【例】

    一.调用JIRA接口------实现过滤器搜索问题 1. 在SoapUI中新建 REST Project, 在URI 中输入登录接口的 url (任意一个 Rest 接口的 url 都可以): 2. ...

  4. 如何用Java8 Stream API找到心仪的女朋友

    传统的的Java 集合操作是有些啰嗦的,当我们需要对结合元素进行过滤,排序等操作的时候,通常需要写好几行代码以及定义临时变量. 而Java8 Stream API 可以极大简化这一操作,代码行数少,且 ...

  5. 使用Azure REST API创建虚拟机

    Hollis Yao, Shihao Rong  使用REST API创建虚拟机之前,首先要确保Azure订阅中已经建好了"云服务"和"存储账号".如果没有的话 ...

  6. 使用hbase的api创建表时出现的异常

    /usr/lib/jvm/java-7-openjdk-amd64/bin/java -Didea.launcher.port=7538 -Didea.launcher.bin.path=/usr/l ...

  7. (译)iPhone: 用公开API创建带小数点的数字键盘 (OS 3.0, OS 4.0)

    (译)iPhone: 用公开API创建带小数点的数字键盘 (OS 3.0, OS 4.0) 更新:ios4.1现在已经将这个做到SDK了.你可以设置键盘类型为UIKeyboardTypeDecimal ...

  8. JavaEE Tutorials (11) - 使用Criteria API创建查询

    11.1Criteria和Metamodel API概述16811.2使用Metamodel API为实体类建模170 11.2.1使用元模型类17011.3使用Criteria API和Metamo ...

  9. 使用Win32 API创建不规则形状&带透明色的窗口

    前一阵突然想起了9月份电面某公司实习时的二面题,大概就是说怎么用Win32 API实现一个透明的窗口,估计当时我的脑残答案肯定让面试官哭笑不得吧.所以本人决定好好研究下这个问题.经过一下午的摸索,基本 ...

随机推荐

  1. 浅谈GPU

    Programmable Graphics Processing Unit(GPU),可编程图形处理单元,可编程图形硬件. 98年NVIDIA的modern GPU研发成功,使用晶体管(transis ...

  2. EntityFramework 优化

    1.分页的时候,尽量在数据库里面去分页. //在数据库中分页 ).Take().ToList(); //先把数据从数据库中查出来,然后才分页 ).Take(); 2.尽量禁用延迟加载,尽量使用预加载和 ...

  3. 2015.10.15class

    #include<stdio.h> main() { int a; printf("你的智商是多少?\n"); scanf("%d",&a) ...

  4. listview的用法

    带标题和内容的 private String[] mtitle={"姓名","年龄","生日",};private String[] mar ...

  5. React(JSX语法)----动态UI

    1.React honws how to bubble and capture events according to the spec,and events passed to your event ...

  6. odoo-10.0 create database 失败

    在初始化数据库的界面点击[create database] create database 失败 报错如下 2017-01-05 20:15:18,529 4652 INFO ? werkzeug: ...

  7. ubuntu 一些命令

    打开终端 ctrl+alt+t 关闭中端 ctrl+shift+q 打开ppt openoffice.org -g xx.ppt &

  8. Linux运维入门到高级全套常用要点

    Linux运维入门到高级全套常用要点 目 录 1. Linux 入门篇................................................................. ...

  9. MySQL判断字段值来确定是否插入新记录

    今天正好有个新需求,要求在一张表中,保证不插入重复的记录. 即,保证每条记录中的某个字段的值不重复. 下面是我给出的SQL语句: //存在-->更新 //不存在-->插入 UPDATE 表 ...

  10. 时间戳 JavaScript parse() 方法 处理技巧

    返回1970/01/01至2012/3/21之间的毫秒数: var d = Date.parse("March 21, 2012"); d 输出结果: 1332259200000 ...