4 시작하기
hanmj edited this page 9 months ago

xit-public-info란?

행정정보 공동이용 시스템에 연계하여 정보를 조회하는 모듈로 java 17이상에서 동작한다.

사전 요건

행정정보 공동이용 시스템에게서 사용하고자 하는 API에 대해

  • 사용 신청 후 승인을 받아야 한다.
  • api key를 발급받아야 한다.

설치

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 파일을 생성하고 다음 내용을 설정한다.

{
    "host": "http://10.188.225.94:29001",
/*    행정정보 url
    운영: http://10.188.225.25:29001
    개발: http://10.188.225.94:29001
*/
    "apis": [
        {
            "name": "이용 API 이름(필수)",
    
            "url": "API URL",
            "key": "행정정보 공동이용 서비스가 발급한 api key",
            
            "userServerId":     "이용기관 gpki server id",
            "providerServerId": "보유기관 gpki server id",
            "gpki": true, // 데이터 암복호화 사용 여부
            "mock": false // 보유기관 가상 데이터 사용 여부
        },
	    ...
    ]
}

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

{
    "host": "http://10.188.225.94:29001",
/*    행정정보 url
    운영: http://10.188.225.25:29001
    개발: http://10.188.225.94:29001
*/
    "apis": [
        {
            "name": "basic-info-ext",
    
            "url": "/piss/api/molit/SignguCarBassMatterInqireService",
            "key": "행정정보 공동이용 서비스가 발급한 api key",
            
            "userServerId":     "이용기관 gpki server id",
            "providerServerId": "보유기관 gpki server id",
            "gpki": true, // 데이터 암복호화 사용 여부
            "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);
}