-
REST API란? RESTful API란?CS/네트워크 2021. 12. 27. 16:17728x90
HTTP API에 대해서 모르신다면 이 글을 보기 전에 아래의 글을 보고 오시면 좋을 것 같습니다.
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가 빠져있는 경우는 자기서술적 메시지가 아닙니다.
Content-Type이 빠져있는 경우는 자기서술적 메시지가 아닙니다.
-애플리케이션의 상태에 대한 엔진으로써 하이퍼미디어(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
https://www.youtube.com/watch?v=iOueE9AXDQQ
https://ko.wikipedia.org/wiki/REST
https://www.youtube.com/watch?v=4DxHX95Lq2U
https://www.youtube.com/watch?v=RP_f5dMoHFc
https://tosuccess.tistory.com/219
'CS > 네트워크' 카테고리의 다른 글
HTTP 헤더 - 일반 헤더 (0) 2022.01.02 HTTP 응답 메시지 - 상태 코드(State Code) (0) 2021.12.28 HTTP API란? (0) 2021.12.24 HTTP 기본 (0) 2021.12.22 URI란? (URI VS URL VS URN) (0) 2021.12.19