Restful API

CinnamonTree·2022년 6월 3일
0

정의: WWW과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식으로 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반에 대한 패턴

REST란 REpresentational State Transfer의 약자로, API설계 중심에 자원이 있고, HTTP Method를 통해 자원을 처리하도록 설계하는 것이다.

REST의 특징

1) Uniform interface
URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일
2) Stateless
REST는 무상태성 성격을 갖는다. 다시말해 작업을 위한 상태정보를 따로 저장하고 관리하지 않는다. 모든 요청은 필요한 모든 정보를 담고 있어야 한다.
3) Cacheable
REST는 HTTP 웹표준을 그대로 사용하기 때문에, 웹의 인프라를 그대로 활용하여 HTTP가 가진 캐싱 기능을 적용할 수 있다.
4) Self-descriptiveness
REST API만 보고도 쉿게 이해할 수 있는 자체 표현 구조롤 되어있다.
5) Client-Server
REST서버는 API제공, 클라이언트는 사용자 인증이나 세션, 로그인 정보등을 직접 관리하는 구조로 각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로간 의존성이 줄어든다.
6) 계층형 구조
REST서버는 다중계층으로 구성되며 보안, 로드밸런싱 계층을 추가하여 구조상 유연성을 둘 수 있다.

RESTful 하게 API 를 디자인 한다는 것은 무엇을 의미하는가?

  1. 리소스와 행위를 명시적, 직관적으로 분리한다.
  • 리소스는 URI로 표현되는데, 명사로 표현되어야 한다.
  • 행위는 HTTP Method(GET, POST, PUT, PATCH, DELETE)을 사용한다.
  1. Message는 Header와 Body를 명확하게 분리하여 사용한다.
  • Entity에 대한 내용은 body에 담는다.
  • 어플리케이션 서버가 행동할 판단의 근거가 되는 컨트롤 정보인 API버전, 응답받고자 하는 MIME타입 등은 header에 담는다.
  1. 하위호환성을 보장하도록 API버전을 관리한다.

  2. 서버와 클라이언트가 같은 방식을 사용하여 요청하도록 한다 = URI가 플랫폼 중립적이어야 한다

  • 브라우저는 form-data형식의 submit으로 보내고 서버는 json형태로 보내는 분리보다는 형식을 하나로 통일하여라.

MIME 타입이란?

클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘
EX: text/plain, text/html, image/jpeg, ...

왜 사용하나?

텍스트 파일 통신 시 ASCII 표준만 따르면 되지만,
음악, 동영상 등 바이너리 파일을 보내는 경우 ASCII만으로는 전송이 불가능하여 바이너리 파일을 텍스트 파일로 변환하는 기술이 필요함

REST API 단점:

분산환경에는 부적합하다.
HTTP 통신 모델에 대해서만 지원한다.

0개의 댓글