끄적끄적 코딩
article thumbnail

OPEN API (Application Programming Interface)

- OPEN API는 프로그래밍에서 사용할 수 있는 개방되어 있는 상태의 Interface
- naver, kakao등 포털 서비스 사이트나 통계청, 기상청, 우체국 등과 같은 관공서, 공공 데이터 포털(https://www.data.go.kr)이 가지고 있는 데이터를 외부 응용 프로그램에서 사용할 수 있도록 OPEN API를 제공하고 있다.
- OPEN API와 함께 거론되는 기술이 REST이며, 대부분의 OPEN APIREST방식으로 지원

REST(Representational State Transfer)

- REST‘Representational State Transfer’의 약어로 하나의 URI는 하나의 고유한 리소스(Resource)를 대표하도록 설계된다는 개념에 전송방식을 결합해서 원하는 작업을 지정한다.

- 웹의 장점을 최대한 활용할 수 있는 아키텍처(설계구조)로써 REST를 발표

- HTTP URI를 통해 제어할 자원 (Resource)를 명시하고, HTTP Method(GET, POST, PUT, DELETE)을 통해 해당 자원(Resource)를 제어하는 명령을 내리는 방식의 아키텍처


REST 구성

- 자원 (Resource) - URI
- 행위 (Verb) - HTTP Method
- 표현 (Representations)

잘 표현된 HTTP URI로 리소스를 정의하고 HTTP method로 리소스에 대한 행위르 정의한다.
리소스는 JSON, XML과 같은 여러 가지 언어로 표현할 수 있다.


기존 ServiceREST Service

- 기존 Service : 요청에 대한 처리를 한 후 가공된 data를 이용하여 특정 플랫폼에 적합한 형태의 View로 만들어서 반환
- REST Service : data 처리만 한다 거나, 처리 후 반환될 data가 있다면 JSON이나 XML 형식으로 전달. View에 대해서는 신경 쓸 필요가 없다. >> 이러한 이유로 Open API에서 많이 사용


REST

기존의 전송방식과는 달리 서버는 요청으로 받은 리소스에 대해 순수한 데이터를 전송한다.

기존의 GET/POST 외에 PUT, DELETE 방식을 사용하여 리소스에 대한 CRUD 처리를 할 수 있다.

HTTP URI을 통해 제어할 자원(Resource)을 명시하고, HTTP METHOD(GET/POST/PUT/DELETE)를 통해 해당 자원(Resource)를 제어하는 명령을 내리는 방식의 Architecture이다.

자원을 표현할 때 Collection(문서, 객체의 집합)Document(하나의 문서, 객체) 사용

가장 큰 단점은 딱 정해진 표준이 없어 다들 이렇게 쓰더라~~’정도의 암묵적인 표준만 정해져 있다.
- 하이픈(-)은 사용 가능하지만 언더바(_)는 사용하지 않는다. (가독성)
- 특별한 경우를 제외하고 대문자 사용은 하지 않는다. (대소문자 구분을 하기 때문, RFC3986 규정)
- URI 마지막에 슬래시(/)를 사용하지 않는다.
- 슬래시(/)로 계층 관계를 나타낸다.
- 확장자가 포함된 파일 이름을 직접 포함시키지 않는다.
- URI는 명사를 사용한다.

- 기존의 웹 접근 방식과 REST API 방식의 차이점

- 기존의 블로그등은 GETPOST만으로 자원에 대한 CRUD를 처리하며, URI는 액션을 나타냈다.

- REST로 변경할 경우 4가지 method를 모두 사용하여 CRUD를 처리하며, URI는 제어하려는 자원을 나타낸다.

 

REST API 설정

Jackson Library
- jackson-databind 라이브러리는 객체를 JSON 포맷의 문자열로 변환시켜서 브라우저로 전송한다. - https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind  
- jackson-dataformat-xml 라이브러리는 객체를 xml로 브라우저로 전송한다.
- https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml  
- pom.xmllibrary


REST 관련 Annotation

 

'Spring' 카테고리의 다른 글

Spring - MyBatis  (0) 2023.05.01
Spring MVC(Model-View-Controller)  (1) 2023.04.20
Spring AOP(Aspect Oriented Programming)  (0) 2023.04.18
Spring IoC(Inversion of Control), DI(Dpendency Injection)  (0) 2023.04.18
Spring Framework  (0) 2023.04.17

검색 태그