RESTful API 에 대해 알아보자!
REST API 란?
소프트웨어 아키텍쳐 중 하나인 REST API는 Representational State Transfer 의 약자이다. 이는 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 것을 의미한다. 특히 REST의 경우 HTTP 프로토콜을 활용하기에 웹 개발 시 장점을 최대한 활용할 수 있는 아키텍처이다.
REST의 구성
REST는 크게 자원, 행위, 표현의 3가지로 나누어진다.
- 자원 (Resource) - URL
자원에는 고유한 리소스 식별자가 있고, 이는 서버에 있다. 이 자원을 구별하는 것을 바로 URI 라고 부른다.
- 행위 (Verb) - HTTP Method
GET
: 자원 조회POST
: 자원 생성PUT
: 자원 수정DELETE
: 자원 삭제
행위는 자원이 어떠한 동작을 수행할 지를 나타내는 것으로, 대표적으로
GET
, POST
, PUT
, DELETE
를 사용한다.- 표현 (Representations)
클라이언트가 자원의 상태에 대한 조작을 요청하면 서버는 이에 대해 응답을 `JSON`, `XML` 등의 형태로 보내준다.
REST의 특징
REST는 아래의 6가지 특징을 가진다.
- Server-Client (서버/클라이언트 구조)
- Stateless (무상태성)
- Cacheable (캐시 처리 가능)
- Self-descriptiveness (자체 표현 구조)
- Layered System (계층화)
- Uniform Interface (인터페이스 일관성)
REST 장단점
장점
- HTTP 프로토콜을 이용하므로 별도의 인프라 구축이 필요없다.
- HTTP 프로토콜을 사용하는 플랫폼에서는 모두 사용 가능하다.
- 서버와 클라이언트의 역할을 명확하게 분리한다.
단점
- 표준이 존재하지 않아 별도로 정의가 필요하다.
- HTTP 프로토콜에 의존적이다.
- CRUD 4가지 형태의 메소드만 제공한다.
RESTful API 란?
HTTP와 URI를 이용하여 자원에 접근할 수 있도록 하는 애플리케이션 인터페이스이다. REST API 를 사용하여 개발한 서비스를 RESTful 하다고 할 수 있다.
RESTful API 개발 원칙
- 자원을 식별할 수 있어야 한다. 이 때 자원의 식별은 URI를 통해 한다.
- 행위는 HTTP 메소드를 통해 표현한다.
GET
,POST
,PUT
,DELETE
등이 사용된다.
- 메시지는 자기 서술적이어야 한다. 메시지 포맷과 HTTP 메소드를 통해 요청의 의도를 표현할 수 있어야 한다.
- 애플리케이션의 상태는 Hypermedia를 통해 관리한다. Hypermedia 링크를 통해 애플리케이션의 상태를 전환할 수 있어야 한다.
RESTful API 사용 사례
POST
블로그 포스팅 생성- Request
POST http://blog.com/post Body: { "post": { "title": "RESTful 에 대해 알아보자!", "contents": "REST API는 ...", "author": "Daniel", ... } }
Status Code: 201 CREATED Content-Type: application/json { "errMsg": "Success" }
GET
블로그 포스팅 조회- Request
GET http://blog.com/post/1
Status Code: 200 OK Content-Type: application/json "errMsg": "Success", "post": { "title": "RESTful 에 대해 알아보자!", "contents": "REST API는 ...", "author": "Daniel", ... }
PUT
블로그 포스팅 수정- Request
PUT http://blog.com/post/1 Body: { "post": { "title": "RESTful 에 대해 알아보자!(2)", "contents": "REST API는 ...", "author": "Daniel", ... } }
Status Code: 200 OK Content-Type: application/json "errMsg": "Success"
DELETE
블로그 포스팅 삭제- Request
DELETE http://blog.com/post/1
Status Code: 200 OK Content-Type: application/json "errMsg": "Success"
결론
지금까지 RESTful API 에 대해 알아보았다. 백엔드 개발자의 경우 REST 에 대한 이해는 필수적이라고 생각하고, 이를 잘 생각하고 지키면서 프로그래밍을 하는 것이 좋을 것 같다.