1. REST API의 탄생
Representational State Transfer API
-API : Application Programming Interface
응용프로그램에서 데이터를 주고 받기 위한 방법
(식당의 점원역할.
어떤 특정 사이트에서 특정 데이터를 공유할 경우 어떠한 방식으로 정보를 요청해야 하는지 어떤 데이터를 제공 받을 수 있는지에 대한 규격)
HTTP 주요 저자 중 한 사람인 로이 필딩이 웹(HTTP)설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에
웹의 장점을 최대한 활용할 수 있는 아키텍처로 발표.
2. REST 구성
(1) 자원 (resource) - URL
(2) 행위 (verb) - HTTP Method
(3) 표현 (representation)
3. REST 의 특징
1) Uniform (유니폼 인터페이스)
URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 스타일
2) Stateless (무상태성)
작업을 위해 상태정보를 저장하고 관리하지 않습니다. 세션 정보나 쿠키정보를 별도로 저장하고 관리하지 않는다는 뜻.
단순히 들어오는 요청만 처리하면 된다. 이로인해 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않는다.
3) Cacheable (캐시 가능)
HTTP라는 기존 웹표준을 그대로 사용하기 때문에,
웹에서 사용하는 기존 인프라를 그대로 활용이 가능합니다. 따라서 HTTP가 가진 캐싱기능이 적용 가능합니다.
HTTP 프로토콜 표준에서 사용하는 Last Modified 태그나 E-Tag를 이용하면 캐싱 구현이 가능합니다.
4) Self-descriptiveness (자체 표현 구조)
REST API 메시지만 보고도 쉽게 이해 할 수 있는 자체 표현구조
4. REST API 디자인 가이드
중요한 두가지
(1) URI는 정보의 자원을 표현해야 한다.
(2) 자원에 대한 행위는 HTTP Method (GET POST PUT DELETE)로 표현한다.
4-1. REST API 중심 규칙
(1) URI는 정보의 자원을 표현해야 한다.
members/delete/1 (X)
URI는 자원을 표현하는 것만 하도록!
delete 행위표현은 들어가면 안된다.
-> DELETE /members/1 으로 수정한다.
(2) 자원에 대한 행위는 HTTP Method (GET POST PUT DELETE)로 표현한다.
Method | 역할 |
POST | 요청시, 리소스 생성 |
GET | 리소스 조회, 정보 가져온다 |
PUT | 리소스 업데이트 |
DELETE | 리소스 삭제 |
CRUD : 기본적인 데이터 처리 기능 4가지를 묶어 일컫는 말.
이름 | 조작 | SQL |
Create | 생성 | INSERT |
Read | 읽기 | SELECT |
Update | 갱신 | UPDATE |
Delete | 삭제 | DELETE |
5. HTTP 응답 상태 코드
상태코드 | |
200 | 클라이언트의 요청 정상수행 |
201 | 클라이언트가 리소스 생성 요청, 해당 리소스 성공적으로 생성 (POST 사용시) |
400 | 클라이언트 요청이 부적절 할 경우 사용 |
401 | 클라이언트가 인증되지 않은 상태에서 보호된 리소스를 요청했을 때 사용하는 응답 코드 |
403 | 유저 인증상태와 관계없이 응답하고 싶지 않은 리소스를 클라이언트가 요청했을 때 사용하는 응답 코드 (403 보다는 400이나 404를 사용할 것을 권고. 403 자체가 리소스가 존재한다는 뜻이기 때문에) |
405 | 클라이언트가 요청한 리소스에서는 사용 불가능한 Method를 이용했을 경우 |
301 | 클라이언트가 요청한 리소스에 대한 URI가 변경되었을 때 |
500 | 서버에 문제가 있을 경우 |
'Backend > JavaScript,NodeJS, Express' 카테고리의 다른 글
Pool.js 이해하기 (0) | 2021.08.09 |
---|---|
Maria DB - Express 연결 (Maria DB 설치 및 MYSQL workbench로 접속 및 Express 연결) (0) | 2021.08.05 |
npm i critical 오류 (0) | 2021.05.26 |
token 생성한 뒤, 로그인 된 상태 판단하기 (0) | 2021.05.09 |
간단한 회원가입 쿼리짜기 (0) | 2021.05.06 |