An application for proxying 과학기술정보통신부 우정사업본부 APIs using Spring Cloud Gateway.
기본적으로 공공데이터포털 에서 발급받은 인증키
(serviceKey
) 를 아용하여 openapi.epost.go.kr
를 호출하는 방법은 아래와 같다.
%%{init: {
'sequence': {
'messageAlign': 'left'
},
'fontFamily': 'monospace'
}}%%
sequenceDiagram
CLIENT ->> EPOST: GET /postal/...?serviceKey=...<br>HOST: <EPOST>
EPOST -->> CLIENT: 200 OK
본 모듈은 아래와 같은 기능을 포함하고 있다.
- 설정된
인증키
(?serviceKey
)를 추가 - 응답 캐싱
%%{init: {
'sequence': {
'messageAlign': 'left'
},
'fontFamily': 'monospace'
}}%%
sequenceDiagram
CLIENT ->> PROXY(R): GET /postal/...<br>HOST: <PROXY(R)>
PROXY(R) ->> EPOST: (-> AddRequestParameter)<br><br>GET /postal/...?&serviceKey=...<br>Host: <EPOST>
EPOST -->> PROXY(R): 200 OK
PROXY(R) -->> CLIENT: 200 OK<br><br>(LocalResponseCache <-)
추가로, 좀더 세련된(?), API 가 정의되었다.
%%{init: {
'sequence': {
'messageAlign': 'left'
},
'fontFamily': 'monospace'
}}%%
sequenceDiagram
CLIENT ->> PROXY(A): GET /api/...<br>HOST: <PROXY>
PROXY(A) ->> PROXY(R): GET /postal/...<br>Host: localhost
PROXY(R) ->> EPOST: GET /postal/...?serviceKey=...<br>Host: <EPOST>
EPOST -->> PROXY(R): 200 OK
PROXY(R) -->> PROXY(A): 200 OK
PROXY(A) -->> CLIENT: 200 OK
아래에 열거된(개발된) 모든 서비스들에 대해 데이터 활용 신청을 해야 한다. (동일한 인증키
에 활용
이 추가되는 구조인 듯 하다.)
api | service | route.id | notes |
---|---|---|---|
우편번호 다운로드 서비스 | 우편번호 DB 다운로드 서비스 | download_area_code_service |
|
영문우편번호조회서비스 | 영문 우편번호 조회 서비스 | retrieve_eng_address_service |
|
지번주소조회 서비스 | 지번주소 5자리 우편번호 조회 서비스 | retrieve_lot_number_adress_area_cd_service |
|
우편번호 정보조회 | 통합검색 5자리 우편번호 조회서비스 | retrieve_new_adress_area_cd_search_all_service |
|
도로명주소조회서비스 | 새주소 5자리 우편번호 조회서비스 | retrieve_new_adress_area_cd_service |
최신의 LTS(21
) 가 필요하다.
$ grep '<maven.compiler.' pom.xml
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>${maven.compiler.source}</maven.compiler.target>
<maven.compiler.release>${maven.compiler.target}</maven.compiler.release>
<maven.compiler.testSource>23</maven.compiler.testSource>
<maven.compiler.testTarget>${maven.compiler.testSource}</maven.compiler.testTarget>
<maven.compiler.testRelease>${maven.compiler.testTarget}</maven.compiler.testRelease>
$ mvn clean test
발급받은 인증키
를 SERVICE_KEY
라는 이름의 환경 변수에 저장한다.
$ SERVICE_KEY=<your-own-URL-DECODED-service-key> mvn -Pfailsafe clean verify
e.g.
$ SERVICE_KEY='...==' mvn -Pfailsafe clean verify
(본 모듈은 @SpringBootApplication
으로 annotate 된 class 를 (main
이 아닌) test
모듈에 포함하고 있다.
아래와 같이 실행한 후 Swagger UI 를 열어서 확인한다.
$ SERVICE_KEY='...==' mvn spring-boot:test-run
See epost-openapi-proxy-sample-application.
- How to encode the filename parameter of Content-Disposition header in HTTP?
- HATEOAS: absolute or relative URLs?
- Spring Boot Unit Test ignores logging.level