예전 면접에 갔을 때 질문을 받았던 적도 있고 여러 기업들의 채용 필요 스택에 기재되어 있는 걸 본 적이 있었지만 어떤건지 자세히 몰랐고 당시에 공부를 하기 싫었는지 '몰라도 되겠지'라는 안일한 생각을 하며 지나쳤던 기억이 있다.
마침 Flask에 대해서 구글링을 하며 공부를 하던 중, 'REST API'라는 용어가 나와 이번 기회에 조금이나마 공부를 해보고자 한다.
1. REST API?
우선 REST API를 알기 전 'REST'는 무엇이고 'API'는 무엇인지부터 알아보자.
- REST란?
-
REST의 정의
Representational State Transfer의 약자
-자원의 이름(자원의 표현)으로 구분하여 자원의 상태(정보)를 주고 받는 모든 것을 의미
-
그래서 REST란
1.HTTP URL을 통해 자원(Resource)를 명시하고
2.HTTP Method(POST, GET, PUT, DELETE)를 통해
3.해당 자원에 대한 'CRUD Operation'을 적용하는 것을 의미한다.
CRUD Operation - 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능
Create : 데이터 생성(POST)
Read : 데이터 조회(GET)
Update : 데이터 수정(PUT, PATCH)
Delete : 데이터 삭제(DELETE)
- REST의 구성 요소
REST는 다음과 같은 3가지의 요소로 구성되어 있다.
1.자원(Resource) : HTTP URL
: 모든 자원에 고유한 ID가 존재하고, 이 자원은 서버에 존재한다.
: 자원을 구별하는 ID는 '/groups/:group_id'와 같은 HTTP URL이다.
: Client는 URL을 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 서버에 요청한다.
2.행위(Verb) : HTTP Method
: HTTP 프로토콜의 Method를 사용한다.
: HTTP 프로토콜은 GET, POST, PUT, DELETE와 같은 메서드를 제공한다.
3.표현(Representations) : HTTP Message Pay Load
: 클라이언트가 자원의 상태(정보)에 대한 조작을 요청하면 서버는 이에 적절한 응답(Representation)을 보낸다.
: REST에서 하나의 자원은 JSON, XML, TEXT, RSS등 여러 형태의 Representation으로 나타내어 질 수 있다.
: JSON 혹은 XML을 통해 데이터를 주고 받는 것이 일반적이다.
- REST는 그래서 왜 쓰는데?
: 장점
- HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다.
- HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해준다.
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
- REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
- 서버와 클라이언트의 역할을 명확하게 분리한다.
: 단점
- 표준이 존재하지 않는다.
- 사용할 수 있는 Method가 4가지뿐이다. (HTTP Method의 4종류)
- 구형 브라우저에서 호환이 되지 않아 지원해주지 못하는 동작들이 존재한다
- API란?
- API(Application Programming Interface)
- 데이터와 기능의 집합을 제공하여 프로그램간 상호작용을 촉진하며, 서로 정보를 교환 가능하도록 하는 것
- REST API란?
-
REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.
-
REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.
- RESTful이란?
- RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다.
즉, 'REST API'를 제공하는 웹 서비스를 'RESTful'하다고 할 수 있다.
- RESTful은 REST를 REST답게 쓰기 위한 방법으로, 누군가가 공식적으로 발표한 것은 아니다.
즉, REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭된다.
- CRUD 기능을 모두 POST로만 처리하는 API
- REST API의 설계 규칙을 지키지 못한 경우
- URL는 동사보다는 명사를, 대문자보다는 소문자를 사용해야 한다.
- 마지막에 슬래시(/)를 포함하지 않는다.
- 언더바 대신 하이폰을 사용한다.
- 파일확장자는 URL에 포함하지 않는다.
- 행위를 포함하지 않는다.
References