曾经写过Jira API 的踩坑记一起吐槽接口文档两篇文章吐槽 Jira API 接入过程中遇到的抗,原以为 Jira API 的坑已经踩得七七八八所剩无几了。没想到最近一次功能改动又让我见识到了 Jira API 的混乱。

背景是我们需要实现更多 Jira API 功能的封装,使自动化的缺陷的管理、缺陷的统计、缺陷通知更加精细,所以又看了几个 Jira API 的接口文档。然后呢?我又要吐血了。

由于使用了 Jira 的新版本,所以之前的接口文档已经失效了(谨慎而言),但是经过一遍尝试之后发现之前的实现方式原来都可以正常使用,看来 Jira API 在兼容旧版本方面做的真是好。只需要实现几个新功能的 API 即可完成这个工作目标。

可我还是太天真了,Jira API 怎会给我一条康庄大道。

下面是我在处理 Jira 显示缺陷状态这个数据的时候用到的六种传参方式,其中有获取有设置,而且相互之间不兼容,最可恶的还是不同的接口使用的某一个状态的name还是不一样的,比如关闭状态,在搜索功能用的nameClosed,然后在统计的时候用的是关闭。所以 Jira API 一般 GET 接口会返回很多信息,如果各位不幸遇到,请多关注那些自己暂时用不到的信息,很可能它就是解开另外一个接口上传参数的钥匙。

正常来说,针对某一个状态,我们会对应是个文字描述(一般只有前端显示用),在 Jira API 中通常使用name来表示,然后后端数据库层面,通常使用一个整数型的数据记录,通常使用id,为了统一接口设计字段规范,一般使用 id 进行数据传输(请求和返回),然后前端将id转成name显示,可以通过接口获取缓存或者写到前端代码中。

Jira API 已经证实不按套路出牌,下面是我遇到的关于缺陷状态字段相关功能六种传参方式,各位自行理解:

public static JSONObject getId(int id) {
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("id", id + "");
    return jsonObject;
}

public static JSONObject set(String str) {
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("set", str);
    return jsonObject;
}

public static JSONObject getId(String id) {

    JSONObject jsonObject = new JSONObject();
    jsonObject.put("id", id);
    return jsonObject;
}

public static JSONObject getValue(int id) {
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("value", id);
    return jsonObject;
}

public static JSONObject getName(String name) {
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("name", name);
    return jsonObject;
}

public static JSONObject getIdValue(int id, String value) {
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("id", id + "");
    jsonObject.put("value", value);
    return jsonObject;
}

Have Fun ~ Tester !


↙↙↙阅读原文可查看相关链接,并与作者交流