Javascript/Node.js

RESTful API

c3epmos 2020. 1. 22. 11:00

REST API

REpresentational State Transfer의 약어이다. 네트워크 구조의 한 형식으로 서버의 자원을 정의하고, 자원에 대한 주소를 지정하는 방법을 제시한다. 주소는 의미를 명확히 전달하기 위해 명사로 구성된다. (ex. /users, /sports ..)

주소 외에도 HTTP request method를 사용한다. GET, POST, PUT, DELETE, PATCH 다섯 가지 메서드를 사용한다. 이렇게 주소와 메소드만 보고 요청의 내용을 명확하게 알 수 있다는 장점이 있다. 또한, GET 메소드 같은 경우 브라우저에서 캐싱할 수도 있어서 같은 주소의 GET 요청을 할 때 서버가 아닌 캐시에서 가져올 수 있다. 그리고 HTTP 프로토콜을 사용한다면 클라이언트가 어떤 플랫폼이던 소통할 수 있다.

 

REST 제약 조건

Uniform : URI로 지정한 리소스의 조작을 통일되고 한정적인 인터페이스로 수행한다.

Stateless : 작업의 상태정보를 따로 저장하거나 관리하지 않는다. 단순히 요청만을 처리한다.

Cacheable : HTTP가 가진 캐싱 기능을 사용할 수 있다.

Self-descriptiveness : 메세지만 보고도 목적을 쉽게 이해할 수 있다.

Client-server 구조 : 서버는 API 제공, 클라이언트는 요청하는 역할로 각자 독립적으로 분리한다.

계층형 구조 : 다중 계층으로 구성할 수 있으며, 암호화 계층이나 로드 밸런싱과 같은 계층을 추가할 수 있다.

 

URI vs URL

URI는 인터넷 상에서 자원을 나타내는 유일한 주소이며, URL은 네트워크 상에서 자원의 위치를 알려주는 일종의 규약이다. URI는 URL을 포함하는 개념이다.