
👋 들어가기 전
서버가 있는 프로젝트를 할 때 많이 나오는 키워드
REST, RESTful, REST API 차이가 무엇일까 ??
대강 아는 는낌으로 넘겼던 과거를 반성하고 이번에 깔끔하게 정리하고 가자
✊REST
먼저 RESTful, REST API를 알아보기 위해 공통적으로 언급되는 REST가 무엇인지 알아보자.
Representational State Transfer의 줄임말이다.
조금의 의역이 필요하지만 자원의 이름을 통해 자원의 상태를 전달받는 것을 의미한다.
📦 구성요소
1. 자원(Resource) URI
많은 자원은 서버에 있고 원하는 자원을 얻기위해서는 URI(Uniform Resource Identifier)를
통해 서버에게 원하는 자원의 상태를 요청한다.
2. 행위(Verb) HTTP Method
서버에게 요청을할 때는 HTTP에서 제공해주는 Method를 이용한다.
3. 표현(Representation of Resource) Response
서버에서는 클라이언트에서 요청한 자원의 상태를 JSON, XML 등 다양한 형태로 응답해줘야한다.
✨ 특징
Server-Client(서버-클라이언트 구조)
서버는 자원을 갖고 있는 쪽, 클라이언트는 서버로부터 제공된 API를 통해 자원을 요청하는 쪽이다.
Stateless(무상태)
서버는 상태를 저장하지 않는다.
가장 최신의 요청에 대한 응답만 처리하지, 이전에 왔던 요청이 다음 요청에 영향을 줘서는 안된다.
Cacheable(캐시 처리 가능)
HTTP 프로토콜 표준에서 사용하는 Last-Modified 태그나 E-Tag를 이용하면 캐싱 구현이 가능하다.
대량의 요청을 효율적으로 처리하기 위해 캐시가 요구된다.
Layered System(계층화)
API Server는 순수 비즈니스 로직을 수행하고 그 앞단에 보안, 로드밸런싱, 암호화, 사용자 인증 등을
추가하여 구조상의 유연성을 줄 수 있다.
Uniform Interface(인터페이스 일관성)
URI로 지정한 Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행
✅ 장 / 단점
장단점은 무수히 많지만 내가 실제로 경험하고 느낀 것만 정리해보려한다.
추후 더 느낀다면 추가 될지도??
장점
- HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구출할 필요가 없다.
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
- 서버와 클라이언트의 역할을 명확하게 분리한다.
단점
- REST에서 사용하는 HTTP Method는 제한적이다. (POST, GET, PUT, DELETE)
- 표준이 존재하지 않는다.
☝️REST API
정의
API를 REST 방식으로 구현한 것이다.
REST 방식으로 구현하기 위해 지켜야하는 조건들이 많긴하지만 한번 살펴보자.
설계 기본 규칙
도큐먼트 : 객체 인스턴스나 데이터베이스 레코드와 유사한 개념
컬렉션 : 서버에서 관리하는 디렉터리라는 리소스
스토어 : 클라이언트에서 관리하는 리소스 저장소
URI는 정보의 자원을 표현해야 한다.
- resource는 동사보다는 명사를, 대문자보다는 소문자를 사용한다.
- resource의 도큐먼트 이름으로는 단수 명사를 사용해야 한다.
- resource의 컬렉션 이름으로는 복수 명사를 사용해야 한다.
- resource의 스토어 이름으로는 복수 명사를 사용해야 한다.
GET /Member/1 -> GET /members/1
자원에 대한 행위는 HTTP Method(GET, PUT, POST, DELETE 등)로 표현한다.
1. URI에 HTTP Method가 들어가면 안된다.
GET /members/delete/1 -> DELETE /members/1
2. URI에 행위에 대한 동사 표현이 들어가면 안된다.
GET /members/show/1 -> GET /members/1
3. 경로 부분 중 변하는 부분은 유일한 값으로 대체한다.
GET /members/1
설계 규칙
1. 슬래시 구분자(/ )는 계층 관계를 나타내는데 사용한다.
2. URI 마지막 문자로 슬래시(/ )를 포함하지 않는다.
3. 하이픈(- )은 URI 가독성을 높이는데 사용한다.
4. 밑줄(_ )은 URI에 사용하지 않는다.
5. URI 경로에는 소문자가 적합하다.
6. 파일확장자는 URI에 포함하지 않는다.
7. 복잡한 경우 /리소스명/리소스 ID/관계가 있는 다른 리소스명 형태로 사용한다.
✌️RESTful
정의
RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다.
목적
이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것
성능의 목적이 아니다.
출처
[Network] REST란? REST API란? RESTful이란? - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
'CS > Network' 카테고리의 다른 글
HTTP [ HTTP Version, HTTPS ] (1) | 2024.09.20 |
---|---|
TCP / IP [송수신 과정, 캡슐화, PDU] (0) | 2024.09.20 |
TCP / IP 4계층 [ 계층 구조 ] (0) | 2024.09.19 |
HTTP [HTTP Response] (0) | 2024.09.18 |
HTTP [HTTP Request] (0) | 2024.09.17 |