프로젝트를 안하니 정체가 된 느낌이다.
블로그 업데이트도 정확히 3주 안했다.
이래서는 안된다.
배웠던 개념들은 흐릿해져가고, 알고리즘에 손을 안댄지 시간이 좀 흐른것 같아
자신을 채찍질하려한다.
고로 오늘은 RESTful API의 이해라는 주제로 글을 포스팅한다
사실 위코드 와서 어느정도 코딩을 할줄 알게되고, 백엔드로의 진로를 정했을때쯤 배웠던 개념이고, 프로젝트를 하면서 초기에 올바로 사용하지 못했고, 나중에 가서야 그 의미를 깨닫게된 개념이다.
API란 무엇인가. 나는 아직도 이 개념이 헷갈려서 찾아보곤한다. API는 Application Programming Interface의 약자로 말그대로 해석하면 어플리케이션을 프로그래밍하는데 필요한(혹은 사용되는) 인터페이스이다. 인터페이스는 네이버사전에서 찾아보면 "접속기"라는 뜻이 나오므로, 어플리케이션을 프로그래밍할때 필요한 접속기가 적절한 해석이 될 것 같다.
API의 개념에 대해서 공부하고자 할 때 가장 와닿는 개념은 다음과 같았다.
프로그래밍 언어나 운영체제가 제공하는 기능을 제어할 수 있는 도구나 환경등을 뜻하였으나, 웹에서 그 개념이 확장되어 어떤 웹페이지 혹은 프로젝트에서 제공하는 데이터를 주고 받기 위한 규격을 뜻하기도 한다.
나의 경험에 빗대어 보면, 내가 회원가입 / 로그인을 위해 django 위에서 모델을 생성하고, urls.py에서 엔드포인트를 부여하고, Views.py에서 구현했던 로직의 일련을 API라고 할 수 있는것이다.
REST란 다음의 약자이다. REpresentational State Transfer 구상적인(표현적인?) 상태의 전달이라고 한다.... (ㅎㅎㅎㅎ)
이 약어의 해석으론 전혀 감도 오지않아 좀 더 검색해본 결과 다음과 같은 정의를 찾을 수 있었다.
HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
결국 내가 위코드에서 배운 백엔드 개발중 하나는 REST API를 프로그래밍 하는 일이었다.
나는 에어비엔비 클론코딩 프로젝트에서 데이터 베이스에 등록된 모든 방을 보여주는 API에 /rooms라는 endpoint주소를 부여하였다. 이로써 나는 URI 주소로 리소스를 구분한할 수 있어야한다는 REST API의 조건을 만족했다.
또한 해당 API는 GET메소드를 사용한다. 수행하는 작업이 데이터베이스의 INSERT나 UPDATE의 기능이 없었기 때문에, 즉 CRUD 중 Read의 기능이기 때문에 GET 메소드를 사용하였다.