본문 바로가기
Network

REST

by orioncsy 2023. 2. 17.

Rest

개념

정의

  • REpresentational State Transfer
  • 자원의 표현으로 자원의 상태를 전달하는 것
    • 자원 : 소프트웨어가 관리하는 모든 것
    • 자원의 표현 : 자원을 표현하기 위한 이름
    • 자원의 상태 전달 : 데이터가 요청되는 시점의 자원의 상태를 전달
  • 웹의 기존 기술과 http프로토콜을 사용하여 웹의 장점을 살리는 아키텍처 스타일
  • 네트워크 상 서버와 클라이언트 사의 통신 방식 중 하나

구체적인 의미

  • HTTP URI를 통해 자원을 표시하고 HTTP Method(get, put, delete, post, patch)를 통해 자원에 대한 CRUD를 표현하는 방식

구성 요소

자원 URI

  • 모든 자원에 고유한 ID가 존재하고 자원은 서버에 존재
  • HTTP URI로 표현
  • 클라이언트는 URI를 통해 자원을 지정하고 상태 처리를 서버에게 요청한다.

작업 HTTP method

  • GET, POST, PUT, PATCH, DELETE, OPTION, HEAD, TRACE 등의 메서드를 사용

표현

  • 하나의 자원은 JSON, XML 등을 통해 데이터를 주고받는다.

특징

서버-클라이언트 구조

  • 자원을 가지고 있는 서버와 자원의 처리를 요청하는 클라이언트와 통신하는 구조

Stateless

  • HTTP 프로토콜을 기반으로 무상태성을 갖는다.

Cacheable

  • HTTP가 가지고 있는 캐싱 기능을 적용할 수 있다.

Layered System

  • 클라이언트는 rest api 서버만 호출한다.
  • rest 서버는 다중 계층으로 구성 가능하다.
    • 보안, 로드밸런싱, 암호화, 인증 등을 사용 가능
  • 프록시나 게이트웨이 등의 네트워크 중간 매체 사용 가능

Code on demand

  • 서버로부터 스크립트를 받아서 클라이언트에서 실행
  • 선택적인 부분이다.

Uniform Interface

  • URI로 지정된 자원에 대한 조작을 통일된 인터페이스로 수행

장단점

장점

  • HTTP 프로토콜을 사용하여 REST API를 위한 별도의 인프라 구축이 필요 없다.
  • HTTP 프로토콜을 사용하는 모든 플랫폼에서 사용 가능

단점

  • 사용할 수 있는 메서드 종류가 한정적이다.
  • 구형 브라우저가 제대로 지원을 못해준다.

REST API

개념

Rest API

  • API(Application Programming Interface)
    • 데이터와 기능을 가지고 컴퓨터 프로그래밍 간 정보 교환을 하는 것
  • Rest API
    • API 설계를 Rest 기반으로 구현한 것
  • 확장성과 재활용성이 뛰어나다.
  • HTTP 표준을 기반으로 하기 때문에 그 기반으로 클라이언트, 서버를 구현할 수 있다.

REST API 설계

기본 규칙

  • URI는 정보의 자원을 표시
    • 동사보다 명사, 대문자보다 소문자 사용
    • document 이름은 단수명사, collection 이름과 store 이름은 복수 명사
  • GET, POST, PUT, PATCH, DELETE, OPTION, HEAD, TRACE 등의 메서드를 사용

설계 규칙

  • 슬래시(/)는 계층 관계에 사용
  • URI 마지막에는 /를 사용하지 않는다.
  • 불가피하게 긴 URI에는 하이픈(-)을 사용한다.
  • 밑줄(_)은 사용하지 않는다.
  • URI 경로는 소문자를 사용한다.
  • URI에 확장자를 포함하지 않는다.

응답 상태 코드

  • 1XX : 전송 프로토콜 수준의 정보 교환
  • 2XX : 클라이언트 요청이 성공적으로 수행됨
  • 3XX : 클라이언트 요청이 완료되기 위해 추가적인 행동을 취해야 함
  • 4XX : 클라이언트의 잘못된 요청
  • 5XX : 서버 쪽 오류

RESTful

개념

RESTful

  • REST 아키텍처를 구현하는 웹 서비스를 나타내기 위한 용어
  • 일관적인 컨벤션을 통한 API 이해도와 호환성을 높이기 위한 목적

Reference

[Network] REST란? REST API란? RESTful이란? - Heee's Development Blog

'Network' 카테고리의 다른 글

OSI 7 Layers  (0) 2023.02.18
CORS  (0) 2023.02.18
HTTP 메서드  (0) 2023.02.16
HTTP와 HTTPS의 차이점  (0) 2023.02.15
TCP와 UDP의 차이  (0) 2023.02.15