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);
}