REST? REST API? RESTful API?

ggamang·2023년 4월 12일
0

JAVA&Spring

목록 보기
26/27

REST란?

REST(Representational State Transfer)는 웹 서비스에서 자원을 이름(URI)으로 구분하여 해당 자원의 상태(리소스)를 주고 받는 아키텍처 스타일이다

REST API

REST API는 이러한 REST 아키텍처를 기반으로 만들어진 API로, 클라이언트와 서버 사이의 통신을 위한 표준 방식을 제공한다.

REST API
1) HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시
2) HTTP 프로토콜을 기반으로 하며, HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 사용하여
3) 자원(URI)에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행하는 것을 의미한다

자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는다

REST API 특징

  • Stateless(무상태성)
    클라이언트와 서버 간의 통신에서 상태 정보를 유지하지 않는다.
    = 이전 요청과 현재 요청이 독립적이다
    • Ex) 사용자 인증 정보를 서버에 저장하지 않고, 클라이언트에서 매번 인증 정보를 전송하여 인증을 처리
  • Uniform Interface(인터페이스 일관성)
    자원에 대한 URI로 접근하며, HTTP 메서드를 사용하여 자원을 조작한다.
    = 모든 리소스에 대한 접근 방법이 일관성 있으며, 표준화된 HTTP 프로토콜을 사용
    • ex) GET 메서드로 자원의 상태를 조회하고, POST 메서드로 새로운 자원을 생성
  • Self-descriptive Message(자체 표현 구조)
    HTTP 메시지 자체에 요청과 응답에 대한 정보를 담는다.
    = 메시지에 대한 정보가 명확하게 드러나도록 구성
    • ex) HTTP 응답의 Content-Type 헤더에 응답 본문의 데이터 형식을 명시한다
  • Client-Server Architecture(클라이언트-서버 구조)
    클라이언트와 서버의 분리를 통해 확장성과 중간 계층의 유연성을 제공한다.
    = 서버 측에서는 데이터의 저장, 처리, 관리를 수행하고, 클라이언트 측에서는 데이터 요청과 화면 표시 등을 담당한다
  • Layered System(계층 구조)
    중간에 다양한 서버나 캐시 등을 두어 구성이 가능하며, 레이어가 존재해도 클라이언트는 알 필요가 없다.
  • Cacheable(캐시 처리 가능)
    응답 결과를 캐싱할 수 있어서 네트워크 병목 현상을 완화시킨다
    클라이언트에서 이미 요청한 데이터의 캐시를 활용하여 서버에 다시 요청하지 않고 처리할 수 있다

REST API? RESTful API?

REST API는 REST 원칙에 기반한 웹 서비스를 일컫는 반면, RESTful API는 REST 원칙을 정확하게 따르는 API를 의미한다. 즉, RESTful API는 REST 아키텍처의 모든 제약 조건과 원칙을 엄격하게 준수하는 API를 지칭한다.

REST API Naming 규칙

  1. URL은 명사로 구성되어야 한다.
    ex) /orders : 주문에 대한 정보

  2. URL은 소문자로 작성되어야 하며, 언더스코어(_)대신 하이픈(-)을 사용하여 단어를 구분한다
    ex) /product-categories

  3. URL의 경로는 리소스 간의 계층 구조를 반영해야 한다.
    ex) /orders/1234 : id가 1234인 주문에 대한 정보

  4. URL의 마지막에는 슬래시(/)를 포함하지 않아야 한다.
    ex) /orders/ (X) -> /orders (O)

  5. URL에는 동사나 행위를 나타내는 단어를 사용하지 않는다.
    대신 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 행위를 나타낸다.

  6. 파일 확장자는 URI에 포함시키지 않는다

  7. 컬렉션은 복수형으로 표현한다
    ex) /users, /orders

0개의 댓글