🚀 REST(Representational State Transfer)
- 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미
- HTTP URI
(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고
- Http Method
를 통해
- 해당 자원(URI)에 대한 CRUD Operation
을 적용하는 것
CRUD Operation
이란
CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말로
REST에서의 CRUD Operation 동작 예시는 Create, Read, Update, Delete가 있다.
구성요소
- 자원(Resource) : HTTP URI
- 자원에 대한 행위(Verb) : HTTP Method
- 자원에 대한 행위의 내용(Representations) : HTTP Message Pay Load
특징
- Server-Client(서버-클라이언트 구조)
- Stateless(무상태)
- Cacheable(캐시 처리 가능)
- Layered System(계층화)
- Uniform Interface(인터페이스 일관성)
장점
- REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
- 서버와 클라이언트의 역할을 명확하게 분리한다.
단점
- 표준 자체가 존재하지 않아 정의가 필요하다.
HTTP Method
형태가 제한적이다.
🚀 REST API
- REST의 원리를 따르는 API
- 웹에서 사용되는 데이터나 자원을
HTTP URI
로 표현하고,
HTTP 프로토콜
을 통해 요청과 응답을 정의하는 방식 사용
- REST API를 올바르게 설계하기 위해서는 규칙을 지켜야 함 (잘 알아볼 수 있도록)
설계 예시
- URI는 명사, 소문자를 사용하여야 함 (동사, 대문자보다)
- 마지막에 슬래시를 포함하지 않음
- 언더바 대신 하이픈 사용
- URI에 파일 확장자는 포함하지 않음
- 행위를 포함하지 않음
http://velog.io/delete-post.jpg/ (x)
http://velog.io/test-post (o)
🚀 RESTful이란?
- REST의 원리를 따르는 시스템, REST API의 설계 규칙을 올바르게 지킨 시스템
- REST 아키텍처의 원칙을 모두 만족하는것을 의미
- REST API를 제공하는 웹서비스라면 RESTful하다라고 설명 가능
- URL을 통해 자원을 식별할 수 있어야 하고 Server가 제공하는 정보는 JSON이나 XML형식으로 HTTP body에 포함하여 전송시킴
- 행위는 명시적이어야 하고 GET, UPDATE, DELETE, 등의 행위를 분명히 할수록 RESTful 함
목적
- 이해하기 쉽고 사용하기 쉬운 REST API를 만들기 위해
Reference
REST 개념 - https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80
REST 성숙도 -
https://velog.io/@oka1313/HTTP%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API