song.log

[What is] REST / REST API / RESTful 본문

StudyLog/Tech Interview

[What is] REST / REST API / RESTful

SingaKorean 2020. 1. 17. 13:53
반응형

 

 

  • REST

Representational : 구상주의적인 (<->abstract 추상적인)

State: 상태

Transfer : 전송하다

 

REST는 Representational State Transfer의 약자이다. 웹에 존재하는 모든 자원들(이미지, 동영상, DB)에 고유한 URI를 부여해 활용하는 것으로 자원을 정의하고 자원에 대한 주소를 지정하는 방법론을 의미한다고 한다. HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용

 

- REST의 주요 요소

 

1) Client-server(클라이언트-서버 구조)

클라이언트는 인터페이스를 통해 요청/응답을 하는 역할에 충실하고 서버는 요청이 들어왔을 때 그에 맞는 응대/처리를 책임진다. 이렇게 역할이 확실하게 구분됨으로써 서로의 의존성이 줄어들고 확장성이 개선된다.

 

By separating the user interface concerns from the data storage concerns, we improve the portability of the user interface across multiple platforms and improve scalability by simplifying the server components.

 

2) Stateless(무상태)

사용자나 클라이언트의 Context를 서버쪽에 저장하지 않는다. 상태를 저장하지 않음으로서 서버로 들어오는 요청만 처리하면되기에 구현이 보다 단순해진다. 

 

 Each request from client to server must contain all of the information necessary to understand the request, and cannot take advantage of any stored context on the server. Session state is therefore kept entirely on the client.

 

3)Cacheable(캐시 처리 가능)

HTTP 기본의 웹표준을 그대로 사용하기 때문에 웹에서 사용하는 기존의 인프라를 활용하는 것이 가능하다. 대량의 요청을 효율적으로 처리하기 위해 캐시가 요구되는데, 캐시를 사용하면 응답시간이 빨라지고 REST 컴포넌트가 위치한 서버에 트랜잭션을 발생시키지 않기 때문에, 전체 응답시간, 성능, 서버의 자원 사용률을 향상시킬 수 있다. 

 

Cache constraints require that the data within a response to a request be implicitly or explicitly labeled as cacheable or non-cacheable. If a response is cacheable, then a client cache is given the right to reuse that response data for later, equivalent requests.

 

4) Uniform interface(인터페이스의 일관성)

HTTP + JSON(optional)의 표준을 따른다면, 어떠한 언어, 기술을 사용하던 사용이 가능한 인터페이스 스타일이다.  URI로 지정한 자원에 대한 조작을 통일되고 한정적인 인터페이스로 수행

 

 By applying the software engineering principle of generality to the component interface, the overall system architecture is simplified and the visibility of interactions is improved. In order to obtain a uniform interface, multiple architectural constraints are needed to guide the behavior of components. REST is defined by four interface constraints: identification of resources; manipulation of resources through representations; self-descriptive messages; and, hypermedia as the engine of application state.

 

 

5) Layered system(계층화)

클라이언트는 REST API Server만 호출하고 서버쪽에서는 여러 계층을 추가하여 유연하게 구조를 갖출 수 있다. (보안, 암호화, 사용자인증. 로드밸런싱 등) 

 

The layered system style allows an architecture to be composed of hierarchical layers by constraining component behavior such that each component cannot “see” beyond the immediate layer with which they are interacting.

 

6) Code on demand (optional)

- 서버로 부터 스크립트를 받아서 클라이언트쪽에서 실행 (보안상의 문제가 발생할 수도 있다)

 

REST allows client functionality to be extended by downloading and executing code in the form of applets or scripts. This simplifies clients by reducing the number of features required to be pre-implemented.

 

 

  • REST API (Representational State Transfer Application Programming Interface) 

REST기반 서비스 API

 

  • RESTful

 

REST를 기반으로 구현하는 웹서비스를 나타내기 위한 용어

 

 

 

참고한 URL:

https://restfulapi.net/

https://www.doprax.com/content/What-is-restful-API%3F/

반응형
Comments