REST API
HTTP API에 여러 가지 제약 조건이 추가된 REST API에 대해 배워봅니다.
REST API
REST 아키텍쳐 스타일, 즉 REST의 제약조건을 따르는 HTTP API
-
HTTP 통신에서 어떤 자원에 대한 CRUD 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식
-
어떤 자원에 대해 CRUD(Create, Read, Update, Delete) 연산을 수행하기 위해 URI(Resource)로 요청을 보내는 것
-
클라이언트 / 서버로 구조가 분리되며 독립적으로 개선되어야 한다
-
RESOURCE(자원), METHOD(행위), ROR(자원의 상태) 로 이루어진다
-
클라이언트가 요청을 하면 서버는 자원의 상태를 전달해야함 (JSON 혹은 XML)
REST API의 구성요소
HTTP Resource (자원)
- http://127.0.0.1:5000?query=자원 와 같은 URI
- 모든 것을 RESOURCE(명사)로 표현함
HTTP Method (행위)
-
GET : 데이터베이스에 resource를 요청
-
POST : 데이터베이스에 resource를 생성
-
PUT : 데이터베이스에 resource를 업데이트, 없다면 생성
-
PATCH : 데이터베이스에 resource를 업데이트
-
DELETE : 데이터베이스에 resource를 삭제
자원의 형태 (Representation of Resource)
- 클라이언트와 서버가 데이터를 주고받는 형태 (JSON을 주로 사용)
REST를 구성하는 스타일
- 일관된 인터페이스
- URI에 대한 요청이 통일되고 한정적으로 수행하는 아키텍처 스타일
- 요청을 하는 클라이언트의 언어나 기술에 상관없음
- 무상태성
- 각각의 요청을 별개의 것으로 인식하고 처리하므로 이전 요청이 연관되지 않음
- 작업을 위한 상태정보(세션, 쿠키)를 저장하지 않으므로 구현이 단순함
- 서버의 처리방식에 일관성을 부여하고 부담을 줄임
- 캐시 가능
- Last-Modified Tag 또는 E-Tag를 이용하여 캐싱을 구현할 수 있고, 이것은 대량의 요청을 효울척으로 처리할 수 있게 도와줌
- 서버/클라이언트 구조
- Rest API에서 자원을 가지고 있는 쪽이 서버, 자원을 요청하는 쪽이 클라이언트에 해당
- 서버는 API를 제공하며, 클라이언트는 로그인 정보 등을 직접 관리하는 등 역할을 확실히 구분시킴으로써 서로 간의 의존성을 줄임
- 자체 표현
- 자원의 형태 메세지만으로 어떤 내용을 전달하는 지 알 수 있게 만듦
- 계층형 구조
- 사용자 인증, 암호화 등을 위한 계층을 추가하여 구조를 변경할 수 있음
- 하지만 클라이언트는 서버와 직접 통신 중인지 중간 서버와 통신 중인지 알 수 없음
Leave a comment