Computer Science

REST API란?

닉네임못짓는사람 2021. 1. 25. 04:31
반응형

REST?


REST API(Restful API)라는 단어는 서버에 대해서 공부하기 시작하면서 알게됐다.

REST는 Representation State Transfer의 약자로 분산 하이퍼 미디어 시스템을 위한 아키텍쳐 스타일이다.

즉, 특정한 제약조건들을 모아놓은 집합인 것이다.

REST API는 이러한 REST아키텍쳐를 따르는 어플리케이션 프로그래밍 인터페이스(API)라고 말할 수 있다.

제약


REST는 총 6가지의 제약을 가지고 있다.

1. client-server architecture

-사용자들에게 제공하는 user Interface와 서버 내부의 작업(데이터 스토리지)를 분리함으로써 여러 플랫폼에서

 user Interface의 이식성을 향상시킬 수 있고, 서버는 구성요소를 단순화하여 확장성을 향상시킬 수 있다.

-이러한 구조로 클라이언트와 서버는 서로 의존하지 않고 발전할 수 있는 구조를 가지게된다.

2. statelessness

-서버는 클라이언트의 어떠한 상태도 저장하고 있지 않는다.

 따라서 클라이언트는 서버에 요청을 보낼 때마다 자신을 인증할 수 있는 토큰이나 인증 키를 서버에 전송해야한다.

 그러면 클라이언트는 서버에 종속적이지 않게 되고, 서버는 클라이언트의 상태를 저장하지 않고 받은 요청만 처리한다.

3. cacheabillity

-요청에 대한 응답 내의 데이터에 해당 요청이 캐시가 가능한지, 불가능 한지를 명시해줘야한다.

 캐시 사용이 가능하면 클라이언트는 응답 데이터를 재 사용할 수 있으며, 명시는 cache-control 헤더를 통해 명시한다.

-캐싱을 잘 관리하면 일부 클라이언트와 서버 간의 상호 작용이 부분적 또는 완전히 제거되어 확장성과 성능이 더욱 향상된다.

4. layered system

-클라이언트는 서버에 연결할 때 중간에 중계 서버가 있는지 자체적으로 구분할 수 없다.

 때문에 서버와 클라이언트 사이에 중계 서버가 배치되어도 서버와 클라이언트간 통신에 영향을 주지않기 때문에

 이를 배치해도 별도로 클라이언트, 서버의 코드를 업데이트 할 필요가 없다.

-중계 서버는 로드 밸런싱을 활성화하고 공유 캐시를 제공하여 시스템 확장성을 개선할 수 있다.

5. code-on-demand

-서버는 클라이언트에 실행 가능한 코드(자바 애플릿, 자바 스크립트 등)를 전송하여 클라이언트의 기능을 일시적으로 확장할 수 있다.

6. uniform interface

uniform interface는 모든 RESTful시스템의 설계에 기초한다.

이는 아키텍쳐를 단순화하고 분리하여 각 부분이 독립적으로 발전할 수 있도록 하는데, 총 4가지의 구성요소로 나뉜다.

1) Resource identification in requests

-요청 부분에서 개별 자원에 대한 식별이 가능해야 한다.

-URI를 예로 들면 http://localhost:3000/resource/1

-서버는 DB의 내부 자료를 직접 전송하는 대신, DB의 레코드를 HTML, XML, JSON등의 형태로 전송한다.

2) Resource manipuation through representations

-메세지를 통해 자원을 조작한다는 의미로, 클라이언트의 요청에 어떤 자원에 대한 메타데이터가 충분히 포함되어 있다면,

 서버 상에서 해당 자원을 변경, 삭제할 수 있는 충분한 정보를 가지고 있다는 의미이다.

-이러한 행위는 HTTP Method로 표현하며 종류는 GET, POST, PUT, DELETE가 있다.

-이 네 가지 명령어를 사용해 CRUD(Create, Read, Update, Delete)동작의 수행이 가능하다.

3) self-descriptive message

-메세지는 스스로를 설명해야 한다. 즉, 각 메세지는 자신을 어떻게 처리해야 하는지 충분한 정보를 포함하고 있어야 한다.

4) Hypermedia as the engine of application state

-어플리케이션의 상태는 항상 hyperlink를 통해 전이되어야 한다.

 

이렇게 6가지 제약들이 있는데 이 중에서도 6번째인 uniform interface가 중요하다고 한다.

 

반응형

'Computer Science' 카테고리의 다른 글

배열(Array)과 리스트(List)  (0) 2021.06.07
프로세스(Process)와 스레드(Thread)  (0) 2021.06.06
URL과 URI의 차이  (0) 2021.01.05
하드 링크와 심볼릭 링크  (0) 2020.11.07
8086CPU의 20bit물리 주소 지정 방법  (0) 2020.09.18