어떤 서비스를 개발할 때 본래 필수적인 기능은 아니었지만, 이제는 필수적인 기능이 되어버린 API와 관련하여 글을 작성하려 한다.
이 중 굉장히 많이 쓰이고, 한번도 안 써본 사람은 있어도 한번만 쓰는 사람은 없는 RESTful API와 관련된 글을 작성할 것이다.
API, 도대체 뭐길래?
Application Programming Interface. 말 그대로 애플리케이션을 프로그래밍하기 위한 인터페이스다.
어떤 서비스에는 많은 시스템이 결합하게 되고, 각 시스템은 서로 다른 성격을 가진 녀석들이다.
예를 들어 웹 서비스를 개발한다 할 때, 간단하게는 서버와 클라이언트로 나눌 수 있고,
서버는 그 안에 데이터베이스, 파일 시스템, 웹 서버 ... 가 존재하며, 클라이언트도 모바일, 데스크탑, IoT등 여러 가지로 나눌 수 있다.
즉 어떤 서비스를 개발 하려면, 위와 같은 성격이 다른 녀석들을 모두 설계, 개발해야 하고, 결국에는 통합하여 하나의 서비스를 제공해야 한다.
API는 이 때 사용할 수 있는 어떤 인터페이스다.
Interface, 예전에 인터페이스와 관련된 내용을 작성했는데, 해당 글의 내용을 빌려 정의하자면 다음과 같이 말할 수 있다.
여러 사람이 함께 작업할 때, 틀이 되는 것 또는 그러한 가이드라인
RESTful 하다는건 뭐지?
API는 이제 알겠는데..
많은 사람들이 헷갈리는게 있는데, REST API는 없다. 다만, RESTful 한 API를 설계 하고, 이러한 것을 REST API라고 줄여서 부르기는 한다. 나 또한 REST API로 줄여서 부를 때가 많다.
내가 MkWeb의 RESTful API를 개발할 때 애를 먹었던 이유도 위와 같이, 무지에서 비롯한 사고의 불가능, 즉 설계를 할 수 있는 밑바탕이 없었기 때문에, 오랜 시간이 걸렸고, 시행착오를 많이 거쳤다. 이론을 바탕으로, 설계할 수 있어야 한다고 생각하는 나지만, RESTful 그 자체가 어떤 설명임에도 불구하고, 그래서 REST API는 어떻게 만드는건데?라는 생각으로 시간을 많이 소모했다.
RESTful 하다.
RESTful 하다는 것은 기본적으로 다음과 같은 의미를 갖는다고 나는 정의내렸다.
HTTP Methods를 사용하여 단말간 통신하면서 필요한 정보를 주고 받을 수 있는 Tool. 또는 그러한 방식
'서버'와 이를 이용하는 '엔드 포인트'의 통신이라 할 수 있지만, 사실 요즘 세상에 그것도 Blockchain이 크게 발전하고 있는 시대에 이르러 이러한 구시대적인 발상으로 정의하고 싶지 않았고, 따라서 '단말간 통신'이라고 나는 정의내렸다.
여기까지 아무런 질문없이 이해했다면, 그리고 단 한번도 RESTful API를 접해본 적이 없다면 한번 깊게 생각해보길 바란다.
'웹서버 > Web' 카테고리의 다른 글
[RESTful API 설계하기] 4. RESTful API 데이터 생성 POST Method (0) | 2021.11.27 |
---|---|
[RESTful API 설계하기] 3. RESTful API 데이터 조회 GET Method (0) | 2021.11.19 |
[RESTful API 설계하기] 2. RESTful API 특징 (0) | 2021.11.16 |
[Javascript/CSS] float: left 속성의 빈공간 지우기 / scrollLeft 빈공간 지우기 (0) | 2021.02.21 |