본문 바로가기
IT 이야기/Jira, Confluence, Crowd

jira 스크립트러너 커스텀 Rest API 만들기

by youngmap 2023. 9. 15.
반응형

jira 스크립트러너를 이용해서 커스텀 RestAPI를 만들 수 있습니다.

공식 문서는 아래 링크에서 확인할 수 있습니다.

 

https://docs.adaptavist.com/sr4js/latest/features/rest-endpoints

 

REST Endpoints

ScriptRunner for Jira Server/Data Center Features REST Endpoints Version latest (8.11.0) 8.10.0 8.9.0 8.8.1 8.8.0 8.7.1 8.7.0 8.6.0 8.5.0 8.4.0 8.3.0 8.2.1 8.2.0 8.1.0 8.0.0 7.13.0 7.12.0 7.11.0 7.10.0 7.9.0 7.8.0 7.7.0 7.6.0 7.5.0 7.4.0 7.3.0 7.2.0 7.1.0

docs.adaptavist.com

샘플로 제공하는 코드입니다.

 

doSomting 메소드를 선언하는데 http 메서드는 GET방식이고 jira-administrators 그룹의 속한 사용자 인증을 하면 해당 Rest Api 호출이 가능합니다.

응답은 Json으로 abc: 42를 리턴합니다. 

 

소스코드

import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate
import groovy.json.JsonBuilder
import groovy.transform.BaseScript

import javax.ws.rs.core.MultivaluedMap
import javax.ws.rs.core.Response

@BaseScript CustomEndpointDelegate delegate 

doSomething( 
    httpMethod: "GET", groups: ["jira-administrators"] 
) { MultivaluedMap queryParams, String body -> 
    return Response.ok(new JsonBuilder([abc: 42]).toString()).build() 
}

 

호출방법

curl 명령어로 -u 옵션을 주고 jira-administrators 그룹에 속한 사용자ID와 PW로 인증합니다.

curl -u admin:admin <jira_base_url>/rest/scriptrunner/latest/custom/doSomething

만일 로그인 상태라면 브라우저 주소창에 입력만해도 결과 확인이 가능합니다.

 

결과

{"abc":42}

 

jira에도 다양한 기능의 Rest API를 제공하지만 여전히 부족한 부분이 많이 있습니다.

 

예를 들어 사용자의 마지막 로그인 시간을 알아내는 것은 라이선스 수량 조절의 꼭 필요한 부분인데,

API로 제공하고 있지 않습니다.

따라서 커스텀 API를 작성하거나 직접 솔루션의 DB를 조회하는 방법뿐입니다. 

 

기본적으로 제공하는 API의 불편함을 그나마 스크립트러너 REST Endpoints 메뉴에서 만들 수 있다는 게 다행이라고 할까요.

Administration > ScriptRunner > REST Endpoints 

 

반응형