[Network] REST & REST API & RESTful API

김선욱·2024년 1월 22일

Network

목록 보기
1/1
post-thumbnail

REST란?

  • REST(Representational State Transfer)는 자원의 표현에 의한 상태 전달을 의미한다. 그렇다면 자원의 표현에 의한 상태 전달이란 무엇일까?
    • HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고
    • HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해
    • 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다.
  • REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍쳐 스타일이다.

 

REST 구성요소

  • 자원(Resource)
    • 모든 자원에 고유한 ID가 서버에 존재한다.
    • 자원을 구별하는 ID는 /items/item_id/1 와 같은 HTTP URI이다.
  • 자원에 대한 행위(Verb) : HTTP Method
    • POST, GET, PUT, DELETE, PATCH 등과 같은 HTTP 프로토콜의 Method를 사용한다.
  • 자원에 대한 행위의 내용(Representations) : HTTP Message Pay Load
    • 클라이언트가 자원의 상태(정보)에 대한 조작을 요청하면 서버는 이에 적절한 응답(Representation)을 보낸다.
    • REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태로 나타낼 수 있지만, 주로 JSON을 사용한다.

 

REST 특징

  1. 서버/클라이언트 구조(Server-Client) : 클라이언트는 유저와 관련된 처리를 하고, 서버는 REST API 제공
  2. 무상태성(Stateless) : 서버에서는 상태 정보를 기억할 필요 없이, 요청에 대한 처리만 진행
  3. 캐시 처리 가능(Cacheable) : 캐시 사용으로 응답 시간, 성능, 서버의 자원 이용률 향상
  4. 계층화(Layered System) : 클라이언트와 서버가 분리되어 중간매체를 사용할 수 있어 자유도가 높음
  5. 인터페이스 일관성(Uniform Interface) : 특정 언어나 기술에 종속되지 않음

 

REST API란?

  • REST API란 REST의 원리를 따르는 API를 의미한다.
  • 멀티 플랫폼, 멀티 디바이스의 시대에서 여러 브라우저, 아이폰, 안드로이드 애플리케이션과의 통신에 대응하기 위한 범용적으로 사용성을 보장하는 서버 디자인이다.
  • API : 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램 간의 상호작용을 촉진하며, 서로 정보를 교환 가능하도록 하는 것을 의미한다.

 

REST API 수칙

  • URI는 자원의 정보를 표시해야 한다.
    • 동사보다는 명사, 대문자보다는 소문자 사용
    • 문서 이름은 단수 명사를 사용
    • 컬렉션 이름과 스토어 이름은 복수 명사를 사용
    • GET /items/1
  • 자원에 대한 행위는 HTTP Method(POST, GET, PUT, DELETE, PATCH 등)로 표현한다.
    • URI에 HTTP Method가 들어가면 안된다.
    • URI에 행위에 대한 동사 표현이 들어가면 안된다.
    • 경로 부분 중 변하는 부분은 유일한 값으로 대체한다 (예시 : 고유한 id)
    • DELETE /items/1

 

REST API 설계 규칙

  1. 슬래시 구분자(/)는 계층 관계를 나타내는데 사용한다.
    http://restapi.example.com/categories/foods
  2. URI 마지막 문자로 슬래시를 포함하지 않는다.
  3. 하이푼(-)은 URI 가독성을 높이는데 사용 된다. 주로 URI 경로가 길 때 사용한다.
  4. 언더바(_)는 사용하지 않는다.
  5. URI 경로에는 소문자가 적합하다.
  6. 파일 확장자는 URI에 포함시키지 않는다.

 

RESTful이란?

  • HTTP와 URI를 기반으로 자원에 접근할 수 있도록 제공하는 애플리케이션 개발 인터페이스이다. 기본적으로 개발자는 HTTP Method와 URI만으로 인터넷 자료를 CRUD할 수 있다.
  • REST API를 제공하는 웹 서비스를 RESTful 하다고 할 수 있다.

 


Ref.

profile
💻 Flutter Developer

0개의 댓글