REST API

기타 2019. 11. 15. 14:47

1. REST API(RESTFul API)란


 Representational State Transfer API.


 REST API에 대해서 간략히만 말하면, GET, POST, DELETE, PUT의 4가지 메소드를 제공하는 API 구조를 말한다.

 주로 웹 서버를 구현 할 때, 리소스 조회 - GET, 리소스 생성 - POST, 리소스 삭제 - DELETE, 리소스 수정 - PUT 메소드로 외부에서 리소스에 접근 가능하게 한다.


 이정도만 알고, 서버 구현용 언어(자바스크립트 등) 하나만 사용할 줄 알아도 기본적인 REST API 서버 기능 구현까지는 가능하다.


2. REST API 특징


1) 클라이언트-서버 구조

2) 인터페이스 일관성(Uniform interface)

3) 무상태성(Stateless)

4) 캐시 사용 가능

5) 계층형 구조(Layered System)

6) Code On Demand

7) 자체 표현구조(Self-describing)


1) REST API는 기본적으로 클라이언트와 서버가 분리된 클라이언트-서버 구조로 디자인된다.


2) 서버와 클라이언트가 일관된 인터페이스를 따르게 하여 클라이언트와 서버를 서로 떨어뜨려 놓는다. 이에 따라 서버와 클라이언트는 서로 독립적으로 발전 될 수 있다.


3) 세션, 쿠키 등 상태를 저장하는 방법을 사용하지 않는다. 상태가 없기 때문에 REST API 호출은 서로 독립적으로 수행되고, 각각의 호출에는 작업을 완수하기 위해 필요한 데이터가 모두 포함되어야한다.


4) 무상태성 때문에 Request의 크기가 커질 수 있기 때문에, 오버헤드 최소화를 위해 캐시를 사용할 것을 권장한다.


5) REST 서버는 다중 계층으로 구성 될 수 있다. 보안, 로드밸런싱, 암호화 계층을 추가하는 등 구조상의 유연성을 둘 수 있고, PROXY, 게이트웨이같은 네트워크 기반의 중간 메체를 사용할 수도 있는 것이다. 


6) Code On Demand. 필요에 따라 자바스크립트나 Applet 등 서버의 일부 코드가 클라이언트에게 제공 될 수 있다.


7) REST API는 메시지만 보고도 쉽게 이해할 수 있는 자체 표현적 구조를 가지고 있다.


 이 정도가 REST API의 특징들이다.

 사람들마다 6번이나 7번 특징은 제외시키는 경우도 있는데, REST API에 대해서 설명할 때는 이 7가지 정도만 알면 충분하다.



3. 디자인 가이드


1) URL은 정보의 자원을 표현해야한다.(리소스명은 동사보다는 명사를 사용)

2) 자원에 대한 행위를 HTTP 메소드(GET, POST, PUT, DELETE)로 표현한다.


1 ex)

GET http://192.168.0.63:1337/members/1

DELETE http://192.168.0.63:1337/members/1


2 ex)

회원 정보 조회 : GET members/1

회원 추가 : POST /members/2 (회원 정보는 request의 body 부분에 포함시킵니다.)

회원 삭제 : DELETE /members/1

회원 정보 업데이트 : DELETE /members/1 (수정 정보는 request의 body 부분에 포함시킵니다.)


 참고로 각각의 메소드를 섞어서 쓰는 것도 가능하긴 한데, 원래의 목적대로 사용하는 것이 올바른 디자인 방식이다.

 GET - 리소스 조회

 POST - 리소스 생성

 PUT - 리소스 수정

 DELETE - 리소스 삭제


 특히 GET, POST를 섞어서 쓰는 경우가 있는데, GET은 request의 body가 없기 때문에 URL로만 데이터를 표현한다. 그래서 전송가능한 데이터 크기에 제한이 있고, 기타 메소들마다 차이가 있으니 제역할에 맞게 사용하도록 하자.



4. REST의 3요소


- 리소스(URL)

- 메소드(GET, POST, PUT, DELETE)

- 메시지




5. 장점


- HTTP 프로토콜을 그대로 활용 할 수 있다.

- 유연하다.


 REST API 구조는 HTTP 프로토콜을 그대로 활용하기 때문에 HTTP 프로토콜을 기반으로 REST API 서버를 구현하기 위해서 추가적인 라이브러리나 소프트웨어를 설치할 필요가 없다.(GET, POST, PUT, DELETE 메소드 모두 HTTP 메소드의 일종이다.)


 REST API 구조를 이용하면 다양한 포멧의 데이터를 리턴할 수 있어 유연하고, 계층적 구조를 가지기 때문에 서버 구조 구현에도 좀 더 유연함을 가지고 있다.



6. 레퍼런스

https://www.mulesoft.com/resources/api/restful-api

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

https://ko.wikipedia.org/wiki/REST

https://ko.wikipedia.org/wiki/HTTP

https://meetup.toast.com/posts/92




블로그 이미지

서기리보이

,