1 시작하기
hanmj edited this page 7 months ago

xit-public-info란?

행정정보 공동이용 시스템에 연계하여 정보를 조회하는 모듈이다.

설치

xit-public-info를 사용하려면

  • 프로젝트의 pom.xml에 의존성을 추가
  • gpki.conf 설정
  • intf-conf/public-info.conf 파일을 설정

한다.

의존성 추가

xit-public-info를 응용시스템에서 사용하려면 프로젝트의 pom.xml에 의존성을 다음과 같이 추가한다.

<dependency>
    <groupId>cokr.xit.interfaces</groupId>
    <artifactId>xit-public-info</artifactId>
    <version>23.04.01-SNAPSHOT</version>
</dependency>

gpki.conf 설정

xit-public-info는 GPKI를 이용한 암호화 통신을 지원한다. GPKI 암호화를 사용하려면 gpki.conf를 설정한다.

public-info.conf 설정

클래스패스 상에 intf-conf 디렉토리와 public-info.conf 파일을 생성하고 다음 내용을 설정한다.

{
    "정보서비스 이름": {
        "apiKey": "행정정보 공동이용 서비스가 발급한 api key",
        "apiUrl": "api 호출 URL",

        "userServerId": "이용기관 gpki server id",
        "providerServerId": "보유기관 gpki server id",

        "gpki": true,                         /* GPKI 암복호화 사용 여부 */
        "mock": false                         /* 보유기관 가상 데이터 사용 여부 */
    } 
}

다음은 '연료제원을 포함한 자동차 정보 조회'를 위한 설정 예이다.

{
    "basic-info-ext": {                              /* 서비스 api 이름 */
        "apiKey": "59f26bf09ed196bfbd98210388c4c6ea9dd0f77bde3f35526f082647a305325b",           /* 행정정보 공동이용 서비스가 발급한 api key */
        "apiUrl": "http://10.188.225.25:29001/piss/api/molit/SignguCarBassMatterInqireService", /* 미래행공 운영 호출 URL (행정망) */
        /*"apiUrl": "http://10.188.225.94:29001/piss/api/molit/SignguCarBassMatterInqireService", /* 미래행공 개발 호출 URL (행정망) */

        "userServerId": "SVR4050545002",     /* 이용기관 gpki server id */
        "providerServerId": "SVR1500000015", /* 보유기관 gpki server id */

        "gpki": true,                         /* GPKI 암복호화 사용 여부 */
        "mock": false                         /* 보유기관 가상 데이터 사용 여부 */
    } 
}

정보 요청/응답

정보 요청을 전송하고 응답을 수신하려면

  • ServiceClient를 생성
  • public-info.conf에 정의한 서비스 이름을 설정
  • ServiceClient.request(...)를 호출
  • 응답은 ServiceMessage.Response로 반환

받는다.

다음은 위 예의 'basic-info-ext' 서비스를 실행하는 예다.

JSON json = new JSON();

MyRequest req = ...; // 사용자 정의 요청 객체

ServiceMessage.Response sresp = new ServiceClient()
    .setConf("basic-info-ext") // basic-info-ext 서비스 정의 설정
    .setJSON(json)
    .request(req);             // 요청 객체 전송
String body = sresp.getBody(); // 응답 본문 추출

if (sresp.success()) { // 성공한 응답
    String data = ServiceMessage.Support.peel(body);
    MyObject resp = json.parse(data, MyObject.class);
} else {
    Throwable error = sresp.getError();
    if (error != null)
        throw runtimeException(error);
}