오픈 API Concept

1. 오픈 API 개념 설명

오픈 API는 웹 서비스의 구성요소를 사용하여 사용자에게 API서비스를 제공하게 된다.
먼저 간략하게 웹서비스의 내용을 설명하자면 아래와 같다.

웹 서비스는 네트워크 상에서 서로 다른 종류의 컴퓨터들 간에 상호작용을 하기 위한 소프트웨어 시스템이다.
웹 서비스는 서비스 지향적 분산 컴퓨팅 기술의 일종으로 SOAP, WSDL, UDDI 등의 주요 표준 기술로 이루어진다.
웹 서비스의 모든 메시징에는 주로 XML이 사용된다. -Wikipidia-

2. 웹 서비스 의 주요 구성요소 -SOAP-

SOAP (Simple Object Access Protocol)
XML과 HTTP등을 기본으로 하여 다른 컴퓨터에 있는 데이터나 서비스를 호출하기 위한 통신규약(Protocol)이다.
SOAP을 지원하는 서버가 대중화가 되면서 대부분의 SOAP 서버들을 웹에서 Access가 가능해졌으며 다양한 프로그램언어에서도 쉽게 실행할 수 있게 되었다.

3. 웹 서비스의 주요 구성요소 -UDDI-

UDDI (Universal Description, Discovery, and Integration)
개방형 표준과 비독점적 기술을 기반으로 개발된 전역 비즈니스 레지스터리이다.
이 레지스터리를 이용하여 다양한 웹서비스를 사용자는 쉽게 검색하여 사용할 수 있다.

4. 웹 서비스의 주요 구성요소 -WSDL-

WSDL (Web Service Discription Language)
웹서비스에서 제공하는 기능들(서비스 오퍼레이션에 해당함)을 외부에서 이용할 수 있도록 그 사용방법을 알려주는 인터페이스 언어로 XML 기반으로 작성된다.

웹 서비스의 구성도를 도식화 하면 아래 그림과 같다.

웹 서비스 구성도

경기도 오픈 API 서비스 제공 방식 -SOAP-

1. SOAP (Simple Object Access Protocol)

SOAP은 HTTP, HTTPS, SMTP등을 사용하여 XML 기반의 메시지 를 컴퓨터 네트워크 상에서 교환하는 형태의 프로토콜로써 웹 서비스의 기본적인 메시지 전송 수단 이며 XML-RPC와 WDDX에서 envelope/header/body로 이루어진 구조와 전송(transport)과 상호 중립성(interaction neutrality)의 개념을 도입하였다

SOAP 구조도

2. SOAP의 장점

1. SOAP은 기본적으로 HTTP 기반 위에서 동작하기 때문에, HTTP와 같이 프록시와 방화벽에 구애받지 않고 쉽게 통신이 가능하다.
2. SOAP는 표준 트랜스포트 프로토콜인 HTTP 이외의 다른 트랜스포트 프로토콜들(SMTP)을 사용할 수 있다..
3. 플랫폼 및 프로그래밍 언어에 독립적이다.
4. 간단하고 확장 가능하며, (멀티파트 MIME 구조를 사용하여) 첨부를 통합하는 SOAP XML 메시지를 지원한다.

3. SOAP의 단점

XML 포맷의 형태로 보내기 때문에 다른 기술과 비교해서 상대적으로 느리다.
(최근 네트워크 속도의 비약적인 발전과 성능 최적화 기술의 발전으로 많은 부분이 해결되고 있다.)

4. SOAP Message Example

SOAP 메세지 예제

경기도 오픈 API 서비스 제공 방식 -REST-

1. REST ( Representational State Transfer )

REST는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식으로, 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었다.
발표 당시는 대규모의 네트워크 시스템을 위한 방법이라는 뜻이었지만 최근 이용되고 있는 REST는 HTTP와 XML을 이용하여 데이터를 주고 받는 웹 서비스를 이용하는 것으로 쓰이고 있다.

REST 구성도

위 그림에서 http://test.openapi.go.kr/ID/33700/ URL을 통해서 데이터를 요청하고 있으며 그 결과는 XML 형태로 반환된다.
각각의 요청과 반환되는 XML 형식은 아래과 같은 구조로 이루어진다.
REST 메세지 예제

ITS 표준노드링크 소개

지능형교통체계 표준 노드링크 구축 기준 (https://www.law.go.kr/LSW/admRulInfoP.do)