REST API

최정환·2021년 12월 21일
0

통신과 브라우저

목록 보기
3/8

REST API란 REST(Representational State Transfer) 아키텍처의 제약 조건을 준수하는 API이다.

API(Application Programming Interface)는 따로 정리

REST는 분산 Hypermedia system (ex: 웹)를 접근하기 위해 개발된 Software Architecture Style(제약조건의 집합)이며 protocol이나 표준이 아닌 아키텍쳐 원칙 세트이다

네트워크에서 Server와 Client 기기간의 의사소통하는 규격 사항 HTTPs를 이용한다.

HTTP의 GET,POST,PUT,DELETE Method를 사용해 접근과 제어를 할 수 있다.
RESTfulAPI는 요청(call)이 수행될 때 리소스 상태에 대한 표현을 요청자에게 전송한다.
이때 데이터의 전송을 XML이나 JSON을 이용하며 이런 REST를 사용하는 Software Architecture를 RESTful 아키텍처라 부른다.

REST를 구성하는 스타일 (이것을 지켜야 REST라고 할 수 있다.)

  • client-server
    요청이 HTTP를 통해 관리되는 Architecture

  • stateless
    요청간 client 정보가 저장X, 각 요청이 분리, 서로 연결 X

  • cache
    client-server 상호 작용을 간소화하는 캐시 가능 데이터

  • uniform interface
    정보가 표준 형식으로 전송되도록 하기 위한 구성 요소 간 통합 인터페이스

    • 요청된 리소스는 식별 가능하며 client에 전송된 표현과 분리되어야한다.
    • 수신한 표현을 통해 클라이언트가 리소스를 조작할 수 있어야 한다.
    • self-descriptive message 메시지는 스스로 설명해야한다.
      즉, client가 정보를 어떻게 처리해야 할지 설명하는 정보가 충분히 포함되어야한다.
      ex)
      1. GET / HTTP/1.1 이와 같은 메시지는 목적지(HOST)가 없어서 불충분하다.
      2. http://127.0.0.1:8000/products/find_items 동사 X
      3. http:~:8000/products?name="something" query를 이용해 검색
    • hypermedia as the engine of application state(HATEOAS)
      클라이언트가 리소스에 액세스한 후 하이퍼링크를 사용해 현재 수행 가능한 기타 모든 작업을 찾을 수 있어야 함.
  • layerd system
    요청된 정보를 검색하는 데 관련된 서버(보안, 로드 밸런싱 등을 담당)의 각 유형을 클라이언트가 볼 수 없는 계층 구조로 체계화하는 계층화된 시스템

  • code-on-demand (optional)
    요청을 받으면 서버에서 클라이언트로 실행 가능한 코드를 전송하여 클라이언트 기능을 확장할 수 있는 기능.

이중에서 uniform interface가 중요한 이유는 독립적 진화때문이다.

독립적 진화

  • server와 client가 각각 독립적으로 진화한다.
  • server의 기능이 변경되어도 client를 업데이트할 필요가 없다.

HTTP




참고 :
https://www.youtube.com/watch?v=RP_f5dMoHFc
https://www.redhat.com/ko/topics/api/what-is-a-rest-api
https://tuhbm.github.io/2019/04/24/architecture/

0개의 댓글