본문 바로가기

CS

[네트워크]REST와 RESTful API

REST란?


  • "Representational State Transfer(대표적인 상태 전달)"의 약자
  • 자원을 이름(표현)을 중심으로 해당 자원의 상태(정보)를 처리하는 모든 것을 의미
  • 웹(www)과 같은 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식
  • 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나(HTTP Method 등)

REST 구체적 예시


  • HTTP URI를 통해 자원(Resource)을 표현, HTTP Method를 통해 해당 자원에 대한 상태를 전달
  • 자원(Resource): Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청
  • 행위(Verb): HTTP Method(GET(조회), POST(생성), PUT(기존 entity 전체 수정), PATCH(기존 entity 일부 수정), DELETE(삭제))
  • 표현(Representation of Resource): 리소스 상태에 대한 표현을 요청자에게 전송(JSON, XML, TEXT, RSS 등)

REST 장점

  • 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있음
  • 범용성, 서버와 클라이언트 역할 분리
  • 다양한 클라이언트의 등장에 대응하기 용이(멀티플랫폼 지원 및 연동)
  • Open API 를 제공하기 쉽다

REST 단점

  • HTTP Method 형태가 제한적

REST 6가지 원칙

  • Uniform Interface : 인터페이스 일관성
  • Stateless: 클라이언트 상태를 서버에 저장하며 안되고 캐시나 JWT 등을 이용해야함
  • Caching: 클라이언트는 응답을 캐싱할 수 있어야 함
  • Client-Server: 클라이언트와 서버는 완전히 분리되어야 함
  • Hierarchical system : 서버와 클라이언트 사이에 로드밸러서나 캐시 서버 등을 둘 수 있다.
  • Code on demand : 서버는 클라이언트가 직접 실행할 수 잇는 로직을 전송할 수 있음 (자바스크립트 등)

REST API란?


  • REST 아키텍처의 제약 조건을 준수하는 API

RESTful이란?


  • REST 원리를 따르는 시스템
  • RESTful API를 구현하는 목적은 퍼포먼스 향상이 아닌 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는것

참고개념


  • API : 사용자(클라이언트)와 리소스 사이의 조정자 역할을 하는 인터페이스로 리소스에 대한 유지관리, 권한관리, 검색방법이나 출처에 대한 지식 없이도 간편하게 원하는 데이터를 요청할 수 있게 함. 특정 시스템과 상호작용하여 원하는 데이터를 얻거나 기능을 수행하고자 할 때 일정한 방법으로 데이터를 요청하고 응답받는다.
  • JSON : 사용 언어와 상관이 없으며 인간과 컴퓨터가 모두 읽을 수 있어 가장 널리 사용됨