[IT기초] REST API 란? REST API 의 정의와 RESTful API
REST API, RESTful API 의 경우
개발자 면접 시 가장 많이 묻는 질문 중 하나로 꼽히기도 하며
실제 현업에서 업무를 수행하면서 사용하기까지 했었다.
그러나 인터넷으로 검색 시 무슨 뜻인지 분명 이해를 했으나,
REST API 에 대해 설명하라는 질문을 들었을 때
데이터 삭제를 진행 한 것 처럼 기억에 남지 않았다.
그래서 정리하는 포스팅
RESTful API 란?
" REST 특징을 기반으로 정의 해 놓은 API "
API 란 소프트웨어나 서버끼리 요청과 응답하는 방법을 정의 해 놓은 것
REST API 란 ?
클라이언트나 서버가 어떤 방식으로 요청하고 어떤 방식으로 응답할지 정해놓은 다양한 방식중 하나
→ 다양한 API 중 하나로
REST 특징을 기반으로 서버끼리 요청과 응답하는 방법을 정의해 놓은 것이라고 할 수 있다.
RESTful API 란 ?
RESTful API 란 REST 아키텍처 스타일을 따르는 웹 API,
즉, REST 원칙을 잘 지키며 설계된 API 를 말한다.
REST API 와 RESTful API 의 차이
REST : 웹상의 자원을 이름으로 구분하고, 해당 자원의 상태를 주고받는 모든 것
RESTful : REST 를 기반으로 만들어진 API
따라서 REST 원리를 잘 따르는 시스템은 RESTful 하다라고 표현 됨
계속해서 REST, REST 하는데
대체 REST 란 무엇일까
REST 란 ?
Representational State Transfer 의 약자로
자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 것을 의미한다
Representational : 표현 (대표를 내세움)
State : 상태
Transfer : 전송
POST, GET, PUT, PATCH, DELETE
HTTP 프로토콜을 사용해서 URI로 요청을 보냄
* RESTful 한 요청으로 작업 시 *
Create POST - https://api.yalcobooks.com/v1/books
Read GET - https://api.yalcobooks.com/v1/books/1
GET - https://api.yalcobooks.com/v1/books?page=1&size=10
Update PUT - https://api.yalcobooks.com/v1/books/20
PATCH - https://api.yalcobooks.com/v1/books/128
Delete DELETE - https://api.yalcobooks.com/v1/books/7
GET - https://api.yalcobooks.com/v1/books/1
버전 1의 책들 중에서 1번의 데이터를 가져오겠다는 뜻
PATCH - https://api.yalcobooks.com/v1/books/128
버전 1의 책들 중에서 128번의 데이터를 수정하겠다는 뜻
* 주의사항 *
URI는 어떤 자원에 관한 요청인지를 표현하는 것으로
URI에는 CRUD 에 관한 내용은 적지 않는다
무엇을 하는가에 대한 동사는 가능한 적지 않고, 그 부분은 HTTP 메소드에서 표현함
→
URI 는 정보의 자원만 표기하고 ( api.yalcobooks.com/v1/books )
HTTP 메소드에서 자원의 행위를 표기해야 된다 ( POST, GET, PUT, PATCH, DELETE )
→ REST API의 요청과 응답에는 구조화된 데이터 표현이 가능하면서도 가벼운 JSON이 많이 사용됨
정리를 하면서 알게된 사실 중 하나는
내가 다녔던 회사의 경우 REST API 를 사용한다고 했었으나
조회와 수정만 GET / POST 를 사용했고
PUT, PATCH, DELETE 등을 사용하지 않아 REST API 를 사용했다고 보기 어렵다는걸 알았다.
이전 회사의 주된 업무가 유지보수 업무라
처음 구축 당시 개발자가 작성 해 놓은 것들을 다 뜯어 고칠 수 없어 그렇게 진행을 한 것 같았다.
REST 도 편리하게 일하기 위해 만들어진 것으로
무조건 REST API 가 좋고 이것만 옳아 !
이런건 아니지만
이왕 작업할 거 나중에 내가 작업하는거에는 REST API 로 작성할 수 있게 해야지