Rest API

Updated:

Goal

  • REST의 개념을 이해한다.
  • REST의 특징을 이해한다.
  • REST API의 개념을 이해한다.
  • REST API의 설계 규칙을 이해한다.
  • RESTful의 개념을 이해한다.

REST란?

  • “Representational State Transfer” 의 약자
  • 자원의 표현으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미
    • 자원(resource)의 표현(representation)?
      • 자원 : 해당 소프트웨어가 관리하는 모든 것
      • ex) 문서, 데이터 등..
      • 자원의 표현 : 그 자원을 표현하기 위한 이름
      • ex) DB의 학생 정보가 표현하기 위한 이름
    • 상태(정보) 전달
      • 데이터가 요청되어지는 시점에서 자원의 상태를 전달
      • JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적
  • REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일
  • REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나

REST의 구체적인 개념

  • HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미
  • CRUD Operation
    • Create : 생성(POST)
    • Read : 조회(GET)
    • Update : 수정(PUT)
    • Delete : 삭제(DELETE)
    • HEAD : haeder 정보 조회(HEAD)

REST의 장단점

  • 장점
    • HTTP 프로트콜의 인프라를 그대로 사용 -> REST API 사용을 위한 별도의 인프라를 구축할 필요 없음..
    • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능
    • Hypermedia API의 기본을 충실히 지키면서 범용성을 보장
    • REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있음
  • 단점
    • 표준이 존재하지 않는다
    • 사용할 수 있는 메소드가 4가지 밖에 없다

REST 구성 요소

  1. 자원(Resource) : URI
    • 모든 자원을 고유한 ID가 존재하고, 이 자원은 Server에 존재한다
    • 자원을 구별하는 ID는 ‘/groups/:group_id’와 같은 HTTP URI이다
    • Client는 URI를 이용해 자원을 지정하고 해당 자원의 상태에 대한 조작을 Server에 요청한다
  2. 행위(Verb) : HTTP Method
    • HTTP 프로토콜의 Method를 사용한다
    • HTTP 프로토콜을 GET, POST, PUT, DELETE와 같은 메서드를 제공한다
  3. 표현(Representation of Resource)
    • Clinet가 자원의 상태에 대한 조작을 요청하면 Server는 이에 적절한 응답을 보낸다
    • REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타내어 질 수 있다
    • JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다

REST API란?

  • API(Application Programming Interface)란
    • 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환 가능 하도록 하는 것
  • REST API의 정의
    • REST 기반으로 서비스 API를 구현한 것
    • 최근 OpenAPI(누구나 사용 가능한 API : 구글 맵, 공공 데이터 등), 마이크로 서비스(하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처) 등을 제공하는 업체 대부분은 REST API를 제공한다

REST API 특징

  • 사내 시스템들도 REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다
  • HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다

REST API 응답 상태 코드

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

References

  • https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
  • https://meetup.toast.com/posts/92

Leave a comment