CS/네트워크

REST API란? RESTful API란?

Junuuu 2021. 12. 27. 16:17

HTTP API에 대해서 모르신다면 이 글을 보기 전에 아래의 글을 보고 오시면 좋을 것 같습니다.

https://junuuu.tistory.com/38

 

HTTP API란?

HTTP란? https://junuuu.tistory.com/36 HTTP 기본 HTTP란? HyperText Transfer Protocol의 약자로 HTML을 전송하는 프로토콜로 시작되었으나 현재는 모든 것을 HTTP 메시지를 통해 전송합니다. HTML, TEXT, IMAGE..

junuuu.tistory.com

 

 

REST란?

REpresntational State Transfer의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미합니다.

웹의 장점과 HTTP의 우수성을 제대로 활용 할 수 있는 아키텍처입니다.

HTTP URI를 통하여 자원을 명시하고 HTTP method를 통해서 명시된 자원의 CRUD Operation을 적용하는 것을 의미합니다.

 

아키텍처(Architecture)란?

영어로 '건축학'이라는 뜻으로 프로그래밍에서는 시스템 목적을 달성하기 위해 시스템의 상호작용 등 시스템 디자인에 대한 제약 및 설계입니다. 설계를 어떻게 할 것 인가 즉, 설계도라고 할 수 있습니다.

 

CRUD Operation이란?

Create, Read, Update, Delete의 약자로 자원을 생성하고 읽고 변경하고 삭제할 수 있는 연산을 의미합니다.

 

API란?

Application Programming Interface의 약자로 응용 프로그램에서 사용할 수 있도록 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻합니다

 

인터페이스(Interface)란?

인터페이스는 한글로 번역하면 "상호 작용"이라는 의미이며 어떤 기계간의 장치끼리 정보를 교환하기 위한 수단이나 방법을 의미합니다.

TV를 리모컨을 통하여 조작하는 것을 인터페이스로 볼 수 있습니다.

 

결국 API란 응용 프로그램들이 서로 정보(데이터)를 주고받으며 상호작용하는 것을 도와주는 매개체로 볼 수 있습니다.

 

REST API란?

REST의 원리를 따르는 HTTP API입니다.

HTTP API가 더 넓은 의미이고 여기에 제약조건이 추가된 것이 REST API입니다.

 

REST는 다음 4가지 제약조건을 만족해야 합니다.

- 자원의 식별

- 메시지를 통한 리소스 조작

- 자기 서술적 메시지

요청 메시지에 HOST가 빠져있는 경우는 자기서술적 메시지가 아닙니다.

자기서술적 메시지 x
자기서술적 메시지 o

Content-Type이 빠져있는 경우는 자기서술적 메시지가 아닙니다.

자기서술적 메시지 x
자기서술적 메시지 o

 

-애플리케이션의 상태에 대한 엔진으로써 하이퍼미디어(HATEOAS = Hypermedia As The Engine of Application State)

HTML처럼 하이퍼링크가 추가되어 다음에 어떤 API를 호출해야 하는지를 해당 링크를 통하여 받을 수 있어야 합니다.

즉, 사용자가 어떤 글을 조회한다면 다음에는 댓글 달기, 다음 게시물 조회, 이전 게시물 조회 등을 할 수 있는데 이런 행동을 상태 전이라고 합니다. 즉 링크에 상태 전이에 대한 정보가 담겨있어야 합니다.

 

이런 부분을 완벽하게 지키면서 개발하는 것이 RESTful API라고 합니다.

 

이미 많은 사람들이 해당 조건을 모두 지키지 않아도 REST API라고 하기 때문에(특히 자기 서술적 메시지, 애플리케이션의 상태에 대한 엔진으로써 하이퍼미디어에 대한 제약 조건이 지켜지지 않습니다) HTTP API나 REST API를 거의 같은 의미로 사용하기 때문에 누군가 REST API라고 하면 HTTP API를 이야기한다고 생각하시면 됩니다.

하지만 엄격하게 따지면 위의 조건들을 모두 지켜야 REST API라고 할 수 있습니다.

 

REST API라는 개념이 생긴 이유

프로그래밍을 할 때는 혼자서 개발하게 된다면 이런 REST라는 아키텍처를 사용해서 API를 설계할 이유가 없습니다.

하지만 보통 프로젝트를 진행하게 되면 팀원들과 같이 진행하게 되고 누군가 내가 설계한 API를 볼 때 어떤 약속이 없다면 이해하기가 어려울 것입니다.

따라서 API를 설계할 때 REST라는 설계 약속을 만들어 이해하기 쉽도록 한 것입니다.

 

 

 

이 글을 봐도 이해가 잘 되지 않는다면 유튜브에 "그런 rest api로 괜찮은가"를 검색하셔서 보신다면 도움이 많이 될 것이라고 생각합니다.

 

 

 

출처

https://www.inflearn.com/questions/126743

 

HTTP API vs REST API - 인프런 | 질문 & 답변

HTTP API를 기반으로 한 것이 REST API인가요? 무슨 차이가 있는지 궁금합니다. - 질문 & 답변 | 인프런...

www.inflearn.com

https://www.youtube.com/watch?v=iOueE9AXDQQ 

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

 

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

대한민국의 힙합 음악가에 대해서는 R-EST 문서를 참고하십시오. REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. 이

ko.wikipedia.org

https://www.youtube.com/watch?v=4DxHX95Lq2U 

https://www.youtube.com/watch?v=RP_f5dMoHFc 

https://tosuccess.tistory.com/219

 

[REST API] HATEOAS

REST 아키텍처 중 Uniform Interface의 HATEOAS를 정리한 내용입니다. HATEOAS Hypermedia as Engine of Application State의 약자로 REST 아키텍처의 Uniform Interface 중 하나의 제약조건이다. "하이퍼미디어를..

tosuccess.tistory.com

https://wonit.tistory.com/454

 

HATEOAS를 모르면 당신이 알고 있는 REST API는 REST API가 아니라고 장담할게요.

이 글은 그런 REST API 로 괜찮은가? 의 이응준 개발자님의 발표 자료에 여러 부분을 차용하였습니다. REST API란 무엇일까 난 지금까지 REST API에 대해서 상당 부분을 오해하고 있었다. REST API라고 함

wonit.tistory.com