Skip to content

jinahya/epost-openapi-proxy

Repository files navigation

epost-openapi-proxy

Java CI with Maven Quality Gate Status Maven Central Version

Abstract

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
Loading

본 모듈은 아래와 같은 기능을 포함하고 있다.

  • 설정된 인증키(?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 <-)
Loading

추가로, 좀더 세련된(?), 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
Loading

Services

아래에 열거된(개발된) 모든 서비스들에 대해 데이터 활용 신청을 해야 한다. (동일한 인증키활용이 추가되는 구조인 듯 하다.)

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

How to build

JDK / JRE

최신의 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>

How to test

$ mvn clean test

How to verify

발급받은 인증키SERVICE_KEY 라는 이름의 환경 변수에 저장한다.

$ SERVICE_KEY=<your-own-URL-DECODED-service-key> mvn -Pfailsafe clean verify

e.g.

$ SERVICE_KEY='...==' mvn -Pfailsafe clean verify

How to run

(본 모듈은 @SpringBootApplication 으로 annotate 된 class 를 (main이 아닌) test 모듈에 포함하고 있다.

아래와 같이 실행한 후 Swagger UI 를 열어서 확인한다.

$ SERVICE_KEY='...==' mvn spring-boot:test-run

How to use / extend

See epost-openapi-proxy-sample-application.


Links

github.com

stackoverflow.com


About

Proxy application for openapi.epost.go.kr

Resources

License

Stars

Watchers

Forks

Packages

No packages published