본문 바로가기
WEB

[WEB] REST API

by 2__50 2020. 8. 20.

REST ( Representational State Transtfer )

자원(정보)에 이름을 지어 구분하고, 고유한 주소를 지정해 해당 자원의 상태/정보를 주고 받는 방법론이다.

 

URL를 통해 자원을 정의하고, 메서드를 통해 할 일(CRUD)을 지정하며, JSON 같은 특정한 형태로 데이터를 주고 받는 것을 의미한다. 

 

자원 : 이미지, 동영상, DB
고유한 주소 : URI
Method : Post, Get, Put, Delete
CRUD : Create, Read, Update, Delete

API ( Application Programming Interface )

제공하는 정보(ex. 날씨 정보)를 어떤 방식으로 요청해야 하는지, 그 요청으로 어떤 데이터를 제공 받을 수 있을지에 대해 정보 제공자(ex. 기상청)가 만들어 놓은 규격이다.

 

TV는 리모콘으로 제어한다면, 운영 체제나 프로그래밍 언어가 제공하는 기능은 API를 통해 제어하여 우리의 App에 활용한다.

 

REST API

server - client 간에 정보를 주고받을 수 있게 하는 REST 기반의 인터페이스다. 요청하는 메세지 자체에 자원, 그에 대한 메서드, 자원의 형태가 담겨있으므로, 요청을 한눈에 파악할 수 있다.


모든 자원을 하나의 Endpoint 에 연결해놓고, 각 Endpoint 는 그 자원과 관련된 내용만 관리한다.

 

출처: https://medium.com/@lidiach217/network-restful-api-d35522ef00e

[ Rest API 의 구성요소 ]

HTTP POST, https://twofivezero.tistory.com/
{
  "users": {
    "name": "twofivezero"
    }
}

 

 

1. 자원(Resource) : 각 자원의 고유 ID인 URI를 이용하여 자원을 지정한다. 일반적으로 동사보다 명사를 사용한다.

 

2. 행위(Verb) : HTTP 기본 Method인 GET/POST/DELETE/PUT 를 이용한다. ( =CRUD Method )

 

할 일 (CRUD) HTTP Method Path (Route)
resource들의 목록을 표시 GET /resource
resource 하나의 내용을 표시 GET /resource/:id
새로운 resource 생성  POST /resource
resource 수정 PUT /resource/:id
resource 삭제 DELETE /resource/:id

 

3. 표현(Representation of Resource) :  Client의 요청에 대한 Server의 응답. JSON이 가장 많이 활용된다.

 

 

[ Rest API 의 특징 ]

 

 1. Uniform Interface (일관된 인터페이스)

 

client - server 사이의 인터페이스를 GET, PUT, POST, DELECT 4가지로 통일했다. 이 일관된 Interface 덕분에 모든 언어( Phython, PHP, C#, Ruby, Java )와 Platform( iOS, Android, Mac, Windows )에서 Rest API를 요청할 수 있다.

 

 

2. Stateless (무상태성)

 

server 에 작업을 위한 client 의 상태 정보를 저장하지 않는다. 때문에 server 는 각각의 요청을 별개의 것으로 받아들여 (같은 사람이 하더라도) 이전 요청이 다음 요청과 연관되지 않아 구현이 쉽고 단순하다. 대신 client의 요청에는 server요청을 처리하는 데 필요한 모든 정보가 담겨 있어야 한다.

 

 

3. Cacheable (캐시 가능)

 

HTTP 라는 기존의 웹표준을 적용하기 때문에, 웹의 기존 인프라인 캐싱 기능을 사용할 수 있어 전체 응답 시간과 성능 그리고 server의 자원 사용이 효율적이다.

 

 

4. Client-Server Architecture (서버-클라이언트 구조)

 

자원을 가지고 있는 server는 API를 제공하고, 자원을 요청하는 client가 사용자 인증, Context(세션, 로그인 정보) 등을 직접 관리하고 사용자가 원하는 화면을 보여준다. 맡은 역할을 구분해 서로 간의 의존성을 줄인다.

 

 

5. Layered System(계층 구조)

 

client 에서는 REST API server 만 호출하기 때문에, server는 client 모르게 API server에 여러 계층(사용자 인증, 암호화, 로드밸런싱 등)을 추가하여 유연한 구조로 개발할 수 있고, Proxy, Gateway 같은 네트워크 기반의 중간매체를 사용할 수 있다. client 측에서는 server와 직접 통신하는지, 중간 server와 통신하는지 알 수 없다.

 

 

6. Code on Demand (옵션)

 

client 가 자원에 대한 표현을 응답으로 받고 처리할 때, server에서 Java applet, Javascript 실행 코드를 받아 기능을 일시적으로 확장할 수 있다.

 

 

 

 

 

도움을 준 정보들

 

유튜브:

얄팍한 코딩사전 [ REST API가 뭔가요? ] youtu.be/iOueE9AXDQQ

 

칼럼:

https://ko.wikipedia.org/wiki/REST

 

REST - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 대한민국의 힙합 음악가에 대해서는 R-EST 문서를 참조하십시오. REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하�

ko.wikipedia.org

https://mangkyu.tistory.com/46

 

[Restful API] Rest API란?

최근에 진행중인 프로젝트에서 Google Drive API, Google App Script 등을 사용하고 있는데, 오늘은 이러한 것들을 사용하기 위해 요청을 보내는 방식인 Rest API에 대해 알아보도록 하겠습니다. 1. Rest API란

mangkyu.tistory.com

https://m.blog.naver.com/azure0777/221066646741

 

[용어 뜻/설명] REST, RESTful API란?

이 게시물은 http://a-mean-blog.com/ko/blog/토막글/_/REST와-RESTful-API 에서 작성되었습니...

blog.naver.com

https://engkimbs.tistory.com/855

 

[Spring Rest API #1] REST API란?

| REST API란 REST API란 REST 아키텍처 스타일을 지키는 API를 말합니다. REST 아키텍처는 클라이언트와 서버간의 독립적인 개발을 진행할 수 있는 아키텍처 스타일입니다. 서버와 클라이언트의 데이�

engkimbs.tistory.com

https://velog.io/@taylorkwon92/REST-API%EB%9E%80

 

REST API란??

웹에 존재하는 모든 자원(이미지, 동영상, DB자원)에 고유한 URI를 부여해 활용하는 것 = 자원을 정의하고 자원에 대한 주소를 지정하는 방법론을 의미응용 프로그램에서 사용할 수 있도록, 운영 �

velog.io

https://medium.com/@lidiach217/network-restful-api-d35522ef00e

 

[Network] RESTFul API

REST(=RESTFul)란, Representational State Transfer” 의 약자로 자원을 이름으로 구분하여 해당 자원의 상태/정보를 주고받는 행위를 일컫는다.

medium.com

https://programmer7895.tistory.com/28

 

Rest API - Uniform Interface

Rest API 특징들 중에서 이번에는 Uniform Interface에 대해 설명할 까 하다.   정의는 URL로 지정된 리소스에 대한 조작을 통일하고 한정된 인터페이스로 수행하는 아키텍쳐 스타일이다. 단순히 정의��

programmer7895.tistory.com

 

댓글