REST API #44

세나정·2023년 2월 7일
2

REST (REpresentational State Transfer)?

2000년에 로이 필딩 (아파치 Http 서버 프로젝트 공동 설립자)의 논문에서 처음 소개 되었다. 발표 당시 웹이 Http를 제대로 활용하지 못하고 있는 상황을 보고 Http의 장점을 최대한 활용할 수 있는 아키텍처로 REST를 소개했고 이는 Http 프로토콜을 의도에 맞게 디자인 하도록 유도하고 있다. REST의 기본 원칙을 잘 지킨 디자인을 "RESTful"이라고 표현 한다고 한다.

즉, REST는 HTTP를 기반으로 클라이언트가 서버의 리소스에 접근하는 방식을 규정한 아키텍처고, REST API는 REST를 기반으로 서비스 API를 구현할 것을 의미한다.


- REST API의 구성

REST API는 자원, 행위, 표현의 3가지 요소로 구성됨
REST는 자체 표현 구조로 구성되어 REST API만으로 Http 요청의 내용을 이해할 수 있다.

- REST API 설계 원칙

Q1. REST에서 가장 중요한 2가지 원칙은?

1. URL은 리소스를 표현하는데에만 집중 2. 행위에 대한 정의는 Http 요청 메서드를 통해 함

1. URL은 리소스를 표현해야 한다.

리소스는 동사보다 명사를 활용

이런식으로 동사를 활용하는 것이 아닌 명사로만 활용

2. 리소스에 대한 행위는 Http 요청 메서드로 표현한다.

Http 요청 메서드는 클라이언트가 서버에게 요청의 종류와 목적 (리소스에 대한 행위)를 알리는 방법
주로 5가지 요청 메서드 (GET, POST, PUT, PATCH, DELETE)를 통해 CURD를 구현한다.

당연하게도, 리소스에 대한 행위는 Http 요청 메서드를 통해 표현하며 URL에 요청 메서드를 표현하지 않는다.


- REST API 실습

다음은 json Server를 통한 REST API 실습이다.

db.json 파일을 생성 (리소스를 제공하는 데이터베이스 역할)

그 후 CLI (Command Line Interface) 특성상 매번 입력해주기 귀찮으니
script를 수정하여 시작할시 실행될 코드를 지정

- GET 요청

todos 리소스에서 모든 todo를 취득한다.

// XMLHttpRequest 객체 생성
const xhr = new XMLHttpRequest();


여기서 todos의 전체가 아닌 id를 활용하여 특정 todo를 취득하고 싶다면?

- POST 요청

todos 리소스에 새로운 todo를 생성하는 것
POST 요청시에는 setRequestHeader 메서드를 사용하여 요청 몸체에 담아 서버로 전송할 페이로드의 MIME 타입을 지정해야함

결과 (미리 만든 post.html)

- PUT 요청

특정 리소스 전체를 교체할 때 사용
다음 예제는 todos 리소스에서 특정 todo를 제외한 리소스 전체를 교체
PUT 요청시에도 setRequestHeader 메서드를 사용하여 요청 몸체에 담아 서버로 전송할 페이로드의 MIME 타입을 지정

- PATCH 요청

PATCH는 특정 리소스의 일부를 수정할 때 사용
다음 예제는 todos 리소스의 id로 todo를 특정하여 completed만 수정
PATCH 요청시에도 setRequestHEader 메서드를 사용하여 요청 몸체에 담아 서버로 전송할 페이로드의 MIME 타입 지정

- DELETE 요청

todos의 id를 활용하여 todo를 삭제

profile
기록, 꺼내 쓸 수 있는 즐거움

0개의 댓글

관련 채용 정보