REST API 란 ?

  • REpressentational State Transfer
  • 네트워크 상에서 클라이언트와 서버의 통신방식중 하나
  • 인터넷상의 시스템간의 상호 운용성을 제공하는 방법중 하나
  • Http Method 를 통해 Resource를 처리하기 위한 아키텍쳐
  • Resource의 Representation에 의한 상태 전달

REST API 의 특징

1. uniform interface

identification of resources

manipulation of resource through represenations

  • 표현을 통한 리소스 처리
  • 요청시 리소스 자체를 응답하는것이 아닌 리소스의 표현 ( JSON, XML , HTML ) 방식 으로 응답하는것.
  • 클라이언트는 요청시 리소스의 표현방식을 요청할수 있다.

self-descrive messages

  • 스스로 메세지에 대한 설명이 가능해야 함.

  • 메세지가 변하더라도 클라이언트는 바뀐 메세지를 보고 해석이 가능해야함.

  • 헤더에 profile이란 타입으로 문서의 링크만을 걸어도 self descrive 해짐

  • 하지만 헤더는 여러 브라우저에서 지원을 안함

  • 그래서 hal (Hypertext Application Language) 이란 방식으로 응답 본문에 profile 을 넣어줌.

  • content-type 의 head는 iana에 등록되어 있다.

  • iana에 등록되어 있는 스펙에 따라 해석이 가능해짐.

hateoas

  • 링크정보를 동적으로 바꿀 수 있다.

  • 서버가 링크정보를 바꾸더라도 클라이언트가 그 링크의 의미를 파악을 해서

    이동을 한다면 실제 URI가 변하더라도 상관이 없음.
  • 클라이언트는 그 링크 정보만을 보고 다음상태로 전이할수 있어야함.

  • 다음 상태로 전이 할수 있는 링크가 존재하면 됨.


2. Client - Server

  • client - server 구조로 이루어여 한다.

  • server와 client의 역할이 명확하게 구분되어져 있으므로 개발하기 편하고

    서로간의 의존성도 줄어듬

3. Stateless

  • 무상태성

  • 작업을위한 상태정보를 별도로 저장하거나 관리하지 않는다.

  • 세션정보나 쿠키를 저장하지 않기때문에 서버의 역할이 줄어들고 구현이 더욱 단순해짐.


4. Cacheable

  • 캐시 가능

  • 다른 상황에 영향을 받지 않고 독립적이므로 캐싱이 가능해진다.

  • 네트워크를 사용하는 비용이 줄어든다.


5. Layered System

  • 계층 구조 시스템
  • 클라이언트 입장에서는 호출만 하기 때문에 서버가 계층으로 되어있는지 알수가 없다.
  • 서버는 사용자 인증, 암호화 , 로드밸런싱 등 의 계층을 추가할수 있고
  • msa의 api gateway 또는 proxy를 이용한 구현이 가능해짐.

6. Code on Demand (Optional)

  • 서버에서 코드를 클라이언트로 보내서 실행할수 있어야한다.
  • 대표적으로 html에서의 javascript
  • 하지만 서버에서 제공되는 코드를 실행하기 때문에 보안문제를 야기시킨다.

 

 

api gateway 설명

https://bcho.tistory.com/1005

+ Recent posts