이전 포스팅에서는 HTTP에 대해 다뤘다.
그렇다면 API는 무엇일까? 또 자주 보이는 단어인 RESTful API는 무엇일까?
조금 더 잘 이해하기 위해 우선 API의 정의부터 찾아보았다.
API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘.
출처 : AWS
위 정의에서도 볼 수 있듯 API는 두 소프트웨어 구성 요소가 '통신'을 할 수 있게 하는 것이다.
가령 A라는 서버에게 B라는 소프트웨어가 지정된 형식을 사용해 정보를 요청했을 때, 요청한 정보가 오게된다.
이때 지정된 형식으로 요청, 명령을 받을 수 있는 수단을 API
라고 한다.
개발자가 API를 만들 때 기능 상 동작하게 만드는 것에만 집중하다보면 추후 유지보수 및 협업 등에 차질을 빚을 수 있다.
그래서 가독성과 의미의 명확성이 중요한데, RESTful API는 요청을 보내는 주소만으로도 이게 무엇을 요청하는 것인 지 파악이 가능
하다.
https://world.com/earth/korea/seoul/gangnam/weather?days=10&sort=recently
위와 같이 RESTful 하게 만들어진 API는 주소만으로 지구라는 행성의 코리아라는 국가에 있는 서울이란 도시 중 강남의 최근 10일간 날씨를 요청하는 것이라는 것을 알 수 있다. 그리고 이런 식으로 자원을 구조와 함께 나타내는 식별자를 URI라고 한다.
RESTful API가 서버와 통신을 하기위해서는 HTTP 규약에 따라 신호를 전송한다. 이 때 HTTP에 내장된 get, post, put, patch, delete 와 같은 명령어를 사용하는데, RESTful 하게 사용하기 위해 명확히 용도를 구분해 사용한다.
결국 RESTful API는 어떤 틀이 명확한, 표준이 있는 것이 아닌 CRUD Operation을 활용한, 의도하는 메시지가 명확한, 역할이 잘 분리된 등의 속성을 가진 API를 뜻한다.
새로운 정보를 추가하는데 사용
서버에 있는 정보를 가져오기 위해 사용
정보를 통째로 교체할 때 사용
정보 중 일부를 특정 방법으로 변경할 때 사용
정보를 삭제할 때 사용
용어 사전
CRUD
create, read, update, delete 의 앞글자를 딴 약어
REST(Representation Resource Identifier)
URI를 통해 자원명시하고 HTTP 메서드(post, get, put, patch, delete)를 통해 CRUD를 적용하는 것