REST API

HTTP API에 여러 가지 제약 조건이 추가된 REST API에 대해 배워봅니다.


REST API

rest

REST 아키텍쳐 스타일, 즉 REST의 제약조건을 따르는 HTTP API

  1. HTTP 통신에서 어떤 자원에 대한 CRUD 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식

  2. 어떤 자원에 대해 CRUD(Create, Read, Update, Delete) 연산을 수행하기 위해 URI(Resource)로 요청을 보내는 것

  3. 클라이언트 / 서버로 구조가 분리되며 독립적으로 개선되어야 한다

  4. RESOURCE(자원), METHOD(행위), ROR(자원의 상태) 로 이루어진다

  5. 클라이언트가 요청을 하면 서버는 자원의 상태를 전달해야함 (JSON 혹은 XML)

REST API의 구성요소

HTTP Resource (자원)

  • http://127.0.0.1:5000?query=자원 와 같은 URI
  • 모든 것을 RESOURCE(명사)로 표현함

HTTP Method (행위)

  • GET : 데이터베이스에 resource를 요청

  • POST : 데이터베이스에 resource를 생성

  • PUT : 데이터베이스에 resource를 업데이트, 없다면 생성

  • PATCH : 데이터베이스에 resource를 업데이트

  • DELETE : 데이터베이스에 resource를 삭제

자원의 형태 (Representation of Resource)

  • 클라이언트와 서버가 데이터를 주고받는 형태 (JSON을 주로 사용)

REST를 구성하는 스타일

  1. 일관된 인터페이스
    • URI에 대한 요청이 통일되고 한정적으로 수행하는 아키텍처 스타일
    • 요청을 하는 클라이언트의 언어나 기술에 상관없음
  2. 무상태성
    • 각각의 요청을 별개의 것으로 인식하고 처리하므로 이전 요청이 연관되지 않음
    • 작업을 위한 상태정보(세션, 쿠키)를 저장하지 않으므로 구현이 단순함
    • 서버의 처리방식에 일관성을 부여하고 부담을 줄임
  3. 캐시 가능
    • Last-Modified Tag 또는 E-Tag를 이용하여 캐싱을 구현할 수 있고, 이것은 대량의 요청을 효울척으로 처리할 수 있게 도와줌
  4. 서버/클라이언트 구조
    • Rest API에서 자원을 가지고 있는 쪽이 서버, 자원을 요청하는 쪽이 클라이언트에 해당
    • 서버는 API를 제공하며, 클라이언트는 로그인 정보 등을 직접 관리하는 등 역할을 확실히 구분시킴으로써 서로 간의 의존성을 줄임
  5. 자체 표현
    • 자원의 형태 메세지만으로 어떤 내용을 전달하는 지 알 수 있게 만듦
  6. 계층형 구조
    • 사용자 인증, 암호화 등을 위한 계층을 추가하여 구조를 변경할 수 있음
    • 하지만 클라이언트는 서버와 직접 통신 중인지 중간 서버와 통신 중인지 알 수 없음

Categories:

Updated:

Leave a comment