REST란?
Representational State Transfer의 약자
자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미
REST의 구체적인 개념
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
- HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해
- 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다
REST 구성 요소
- 자원(Resource) : URI
- 행위(Verb) : HTTP Method
- 표현(Representation of Resource) (응답)
- Client가 자원의 상태에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다.
- REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타난다.
REST의 특징
- Server-Client(서버-클라이언트 구조)
: Resource가 있는 쪽을 Server, resource를 요청하는 쪽을 Client라고 부른다. - Stateless(무상태)
: HTTP 프로토콜은 무상태 프로토콜이므로, 그를 사용하는 REST API 역시 무상태성을 가진다. - Cacheable(캐시 처리 가능)
: HTTP 프로토콜을 사용하므로, 웹에서 사용하는 기존의 기능을 사용할 수 있다. - Layered System(계층화)
: Client는 REST API Server만 호출한다. REST Server는 다중 계층으로 구성될 수 있다. - Uniform Interface(인터페이스 일관성)
: URI로 지정한 Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행한다. - Self-Descriptiveness (자체 표현)
: 요청 메시지만 보고도 쉽게 이해할 수 있는 자체 표현 구조로 되어있다.
REST의 장단점
장점
- HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다.
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
- Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
- REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
- 여러 가지 서비스 디자인에서 생길 수 있는 문제를 최소화 한다.
- 서버와 클라이언트의 역할을 명확하게 분리한다.
단점
- 표준자체가 존재하지 않아 정의가 필요하다.
- HTTP 메소드 형태가 제한적이다.
- 구형 브라우저에서는 호환이 되지 않는다.(익스플로러)
REST API란?
REST 기반으로 서비스 API를 구현한 것
URI는 정보의 자원만 표현해야 하며, 자원의 행위는 HTTP Method에 명시한다는 것
REST API 특징
각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 그 자체로 추론이 가능하다
REST API 설계 규칙
- URI는 정보의 자원을 표현해야한다.
- 자원에 대한 행위는 HTTP Method(Get, Put, Post, Delete 등)로 표현한다.
- URI는 동사보다는 명사를, 대문자보다는 소문자를 사용한다.
- 슬래시 구분자는 계층 관계를 나타내는데 사용한다. (ex. '/groups/group_id')
- URI의 마지막 문자로 슬래시를 포함하지 않는다.
- 하이픈(-)은 URI 가독성을 높이는데 사용한다.
- 밑줄(_)은 URI에 사용하지 않는다.
- 파일 확장자는 URI에 포함하지 않는다.
RESTful
RESTful : REST의 원리를 잘 따른다는 의미
RESTful API : REST의 설계 규칙을 잘 지켜서 설계된 API
면접 예상 질문
- REST란 무엇입니까?
- REST API란 무엇입니까?
- RESTful API에 대해 설명해주세요
참고 URL
https://appmaster.io/ko/blog/rest-apiran-mueosimyeo-dareun-yuhyeonggwa-eoddeohge-dareungayo
https://dev-coco.tistory.com/97
https://mfamcs.netlify.app/docs/dev_knowledge/RESTful%20API%EB%9E%80#rest-api%EB%9E%80
'개발 상식' 카테고리의 다른 글
SOLID 원칙 (0) | 2023.11.19 |
---|---|
객체 지향 프로그래밍 (0) | 2023.11.17 |