TIL 5 | REST API

sehy·2021년 2월 3일
0

REST란?

REST는 Representational State Transfer의 약자로, World Wide Web 같은 하이퍼미디어 기반 분산 시스템을 구축하기 위한 아키텍처 스타일이다. 리소스를 이름으로 구분하여 해당 리소스의 정보를 주고 받는 모든 것을 의미한다. JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다. REST는 어떤 기본 프로토콜과도 독립적이며 HTTP에 연결될 필요가 없다. 하지만 대부분의 일반적인 REST 구현에서 애플리케이션 프로토콜로 HTTP를 사용한다. 이 때, HTTP 프로토콜과 웹의 기존 기술을 그대로 활용하기 때문에 웹의 장점을 최대로 활용할 수 있다.

구체적인 REST

REST는 HTTP URI(Uniform Resource Identifier)를 통해 Resource를 명시하고, HTTP Method(POST,GET,PUT,DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것이다.
1. 자원(Resource) : URI

  • 모든 자원엔 고유한 ID가 존재하고, 이 자원은 Server에 존재한다.
  • 자원을 구별하는 ID는 HTTP URI 이다.
  • Client는 URI를 이용해 자원을 지정하고, 해당 자원의 정보에 대한 조작을 Server에 요청한다.
2. 행위 : HTTP Method
  • GET, POST, PUT, DELETE 와 같은 Method를 제공한다.
3. 표현
  • Client가 자원의 정보를 요청하면 Server는 이에 적절한 응답을 보낸다.

REST의 특징

1.Server-Client

  • 자원을 요청하는 쪽(client)과 응답하는 쪽(server)이 독립적으로 존재해 서로 간 의존성이 줄어든다.
  1. Stateless
  • HTTP 프로토콜은 stateless protocol로 REST 또한 stateless 상태를 가진다.
  • server는 각각의 요청을 완전한 별개의 것으로 인식하여 처리한다. 이전 요청과 다음 요청의 처리에 연관점은 없으며, 이에 따라 server의 처리 방식에 일관성을 가지고 서비스의 자유도가 높아진다.
  1. cacheable
  • HTTP 프로토콜을 그대로 사용함으로써 웹의 기존 인프라를 그대로 사용할 수 있다. 그 중, 강력한 특징인 캐싱 기능을 사용할 수 있다.
  • 캐시 사용을 통해 응답시간이 빨라지고 REST server 트랜잭션이 발생하지 않기 때문에 전체 응답시간, 성능, 서버의 자원 이용률을 향상시킬 수 있다.
  1. layered system
  • REST server는 다중계층으로 구성될 수 있다.
  • 즉, API server는 순수 비지니스 로직을 수행하고 그 앞단에 보안, 로드밸런싱, 암호화, 사용자 인증을 추가하여 구조 상의 유연성을 줄 수 있다.
  • 프록시, 게이트웨이와 같은 네트워크 기반의 중간 매체를 사용할 수 있다.
  1. code-on-demand
  • server로 부터 스크립트를 받아서 client에서 실행된다.(반드시 충족할 필요는 없다.)
  1. uniform interface
  • URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행한다.
  • 특정 언어나 기술에 종속되지 않는 일관성을 가진다.

REST API

  1. API란?
  • Application Programming Interface의 약자로, 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환 가능 하도록 하는 것
  1. REST API의 정의
  • REST를 기반으로 서비스 API를 구현한 것
  • 최근 OpenAPI, 마이크로 서비스 등을 제공하는 업체 대부분은 REST API를 제공한다.
  1. REST API의 특징
  • 시스템의 확장과 재사용이 용이해 보수 및 운용을 편리하게 할 수 있다.
  • REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.

RESTful API?

RESTful은 일반적으로 REST 아키텍처를 구현하는 웹 서비스를 나타내는 용어이다. 공식적으로 발표된 용어는 아니며, REST원리를 따르는 시스템에 사용한다.

참고
https://docs.microsoft.com/ko-kr/azure/architecture/best-practices/api-design
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

0개의 댓글