如何使用 JIRA REST 获取项目中的所有冲刺 API
How to get all sprints in project using JIRA REST API
是否有类似“http://www.example.com/jira/rest/agile/1.0/sprint?project=XYZ”的东西来检索项目中的所有冲刺。
JIRA 平台 api 可以检索项目信息,JIRA 软件 API 可以检索给定板的冲刺。但是我需要任何给定项目(组合)的冲刺或给定项目的至少板,以便我以后可以在这些板上检索冲刺
这个return对你有什么结果吗?
http://jira-domain.com/rest/greenhopper/latest/rapidviews/list
如果是这样,找到包含这个项目的视图的 ID,然后试试这个 url:
http://jira-domain.com/rest/greenhopper/latest/sprintquery/{view-id}?includeHistoricSprints=true&includeFutureSprints=true
你可以做到,但有两个资源:
- 首先你可以得到项目的所有scrum板:
https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getAllBoards
使用查询参数projectKeyOrId和type进行过滤
迭代所有元素并使用下面的 url 和每个板的 id 来获取它的冲刺:
https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/sprint-getAllSprints
写代码前先做一些假设:
- 板名与项目名相同
- 只有一个板子使用该名称
- 我们有一个 Sprint 模型
我在这里使用 Jersey 客户端从 JIRA 检索数据。
private Client jerseyClient = Client.create();
jerseyClient.addFilter(new HTTPBasicAuthFilter("username", "password"));
private Gson gson = new Gson();
辅助方法
/**
* This method will a GET request to the URL supplied
* @param url to request
* @return String response from the GET request
*/
public String makeGetRequest(String url){
ClientResponse response = jerseyClient.resource(url).accept("application/json").get(ClientResponse.class);
return response.getEntity(String.class);
}
/**
* This method helps in extracting an array from a JSON string
* @param response from which Array need to be extracted
* @param arrayName
* @return JsonArray extracted Array
*/
public JsonArray extractArrayFromResponse(String response, String arrayName){
JsonObject jsonObject = gson.fromJson(response, JsonObject.class);
return jsonObject.get(arrayName).getAsJsonArray();
}
检索冲刺的代码
/**
* This method will retrieve list of sprints in a given project
* @param project for which we are requesting sprints
* @return List of sprints
*/
public List<Sprint> getSprints(String project) {
List<Sprint> sprintList = new ArrayList<>();
try {
//get board URL for the given
String boardUrl = "https://jira.company.com/rest/agile/1.0/board?name=" + URLEncoder.encode(project, "UTF-8"); //assumption 1
String boardResponse = makeGetRequest(boardUrl);
JsonArray boards = extractArrayFromResponse(boardResponse, "values");
if(boards.size() > 0){
JsonObject board = boards.get(0).getAsJsonObject(); //assumption 2
//get all sprints for above obtained board
String sprintUrl = jsonHandler.extractString(board, "self")+"/sprint";
String sprintsResponse = makeGetRequest(sprintUrl);
JsonArray sprints = extractArrayFromResponse(sprintsResponse, "values");
//loop through all sprints
for (int i = 0; i < sprints.size(); i++) {
JsonElement sprint = sprints.get(i);
JsonObject sprintObj = sprint.getAsJsonObject();
String sprintName = sprintObj.get("name").getAsString();
Sprint sprint = new Sprint(sprintName);
sprintList.add(sprint);
}//end of for loop
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return sprintList;
}
是否有类似“http://www.example.com/jira/rest/agile/1.0/sprint?project=XYZ”的东西来检索项目中的所有冲刺。
JIRA 平台 api 可以检索项目信息,JIRA 软件 API 可以检索给定板的冲刺。但是我需要任何给定项目(组合)的冲刺或给定项目的至少板,以便我以后可以在这些板上检索冲刺
这个return对你有什么结果吗?
http://jira-domain.com/rest/greenhopper/latest/rapidviews/list
如果是这样,找到包含这个项目的视图的 ID,然后试试这个 url:
http://jira-domain.com/rest/greenhopper/latest/sprintquery/{view-id}?includeHistoricSprints=true&includeFutureSprints=true
你可以做到,但有两个资源:
- 首先你可以得到项目的所有scrum板:
https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getAllBoards
使用查询参数projectKeyOrId和type进行过滤
迭代所有元素并使用下面的 url 和每个板的 id 来获取它的冲刺:
https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/sprint-getAllSprints
写代码前先做一些假设:
- 板名与项目名相同
- 只有一个板子使用该名称
- 我们有一个 Sprint 模型
我在这里使用 Jersey 客户端从 JIRA 检索数据。
private Client jerseyClient = Client.create();
jerseyClient.addFilter(new HTTPBasicAuthFilter("username", "password"));
private Gson gson = new Gson();
辅助方法
/**
* This method will a GET request to the URL supplied
* @param url to request
* @return String response from the GET request
*/
public String makeGetRequest(String url){
ClientResponse response = jerseyClient.resource(url).accept("application/json").get(ClientResponse.class);
return response.getEntity(String.class);
}
/**
* This method helps in extracting an array from a JSON string
* @param response from which Array need to be extracted
* @param arrayName
* @return JsonArray extracted Array
*/
public JsonArray extractArrayFromResponse(String response, String arrayName){
JsonObject jsonObject = gson.fromJson(response, JsonObject.class);
return jsonObject.get(arrayName).getAsJsonArray();
}
检索冲刺的代码
/**
* This method will retrieve list of sprints in a given project
* @param project for which we are requesting sprints
* @return List of sprints
*/
public List<Sprint> getSprints(String project) {
List<Sprint> sprintList = new ArrayList<>();
try {
//get board URL for the given
String boardUrl = "https://jira.company.com/rest/agile/1.0/board?name=" + URLEncoder.encode(project, "UTF-8"); //assumption 1
String boardResponse = makeGetRequest(boardUrl);
JsonArray boards = extractArrayFromResponse(boardResponse, "values");
if(boards.size() > 0){
JsonObject board = boards.get(0).getAsJsonObject(); //assumption 2
//get all sprints for above obtained board
String sprintUrl = jsonHandler.extractString(board, "self")+"/sprint";
String sprintsResponse = makeGetRequest(sprintUrl);
JsonArray sprints = extractArrayFromResponse(sprintsResponse, "values");
//loop through all sprints
for (int i = 0; i < sprints.size(); i++) {
JsonElement sprint = sprints.get(i);
JsonObject sprintObj = sprint.getAsJsonObject();
String sprintName = sprintObj.get("name").getAsString();
Sprint sprint = new Sprint(sprintName);
sprintList.add(sprint);
}//end of for loop
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return sprintList;
}