해당 포스팅은 위키북스의 모던 자바스크립트 Deep Dive라는 책을 독학하며 기록하는 글입니다.
REST
는 2000년 Roy Fielding의 논문에서 처음 소개되었다. 당시 웹이 HTTP를 제대로 사용하지 못하고 있는 상황을 보고 HTTP의 장점을 최대한 활용할 수 있는 아키텍처로서 REST를 소개했고, 이는 HTTP 프로토콜을 의도에 맞게 디자인하도록 유도하고 있다. 여기서 REST의 기본 원칙을 성실히 지킨 서비스 디자인을 RESTful
이라고 표현한다.
REST API는 자원
, 행위
, 표현
의 3가지 요소로 구성되는게 여기서 각각은 다음을 의미한다.
그럼 위 구성을 가지고 REST API를 설계하는 원칙을 살펴보자.
REST에서 가장 중요한 원칙은 두 가지로 URI는 리소스를 표현하는데 집중하고 행위에 대한 정의는 HTTP 요청 메서드를 통해 하는 것이다.
# 나쁜 예시
GET /getTodos/1
# 좋은 예시
GET /todos/1
HTTP 요청 메서드 | 종류 | 목적 | 페이로드 |
---|---|---|---|
GET | index/retrieve | 모든/특정 리소스 취득 | X |
POST | create | 리소스 생성 | O |
PUT | replace | 리소스의 전체 교체 | O |
PATCH | modify | 리소스의 일부 수정 | O |
DELETE | delete | 모든/특정 리소스 삭제 | X |
fetch
메서드는 서버에 HTTP 요청을 보내고 응답을 받아올 수 있는 방법 중 하나로 비동기적으로 동작한다. 기본적인 사용법과 각 인수에 대한 설명은 다음과 같다.
// 기본적인 사용법
fetch(url[, option]);
인수로 받은 url는 정보를 요청하고자 하는 주소이며 선택적으로 option
객체를 주어 요청하는 HTTP 메서드나 header의 내용, body의 내용을 바꿀 수 있다. option
객체를 작성하는 법은 다음과 같다.
const option = {
method: 'POST',
headers: {
// 변경하고자 하는 요청 헤더가 있으면 여기에 '키-값'형태로 기술
},
body:
// POST나 PUT과 같은 HTTP 메서드를 사용할 시 보내야 하는 데이터를 기술
// 이때 꼭 직렬화를 해야한다.
}
만약 사용하고자 하는 HTTP 메서드가 GET
이라면 option
객체의 method
가 기본젃으로 GET
으로 설정되어 있기 때문에 따로 설정해주지 않아도 된다.
fetch
메서드를 사용하는 경우 반환값으로 프로미스 객체를 반환하고, 내용으로는 HTTP 요청에 대한 응답을 담고 있어 프로미스 객체가 제공하는 다양한 프로퍼티와 메서드를 통해 작업을 처리할 수 있다. 이에 대해서는 다음 장인 45장 프로미스에서 알아보자.