이 글은 유튜브 '얄팍한 코딩사전'을 참고하였음을 밝힙니다.
Rest api란 어떤 기술이나 제품을 말하는 것이 아닌, 개발자들 사이에 널리 쓰이는 일종의 형식 입니다.
그렇기 때문에 어떤 프로그래밍 언어를 쓰든 이 형식에 맞춰서 기능을 만들어내면 그것이 Rest api가 되는 것입니다.
어떤 제품을 만들면 사용자가 그 제품을 이용할 수 있도록 제공해야 합니다.
예를 들어, TV는 키거나 끄고, 음량을 조절할 수 있어야 하고, 컴퓨터에는 키보드, 마우스가 있습니다.
이렇게 제품과 사용자 간의 소통을 돕을 수 있도록 하는 것을 인터페이스라고 합니다.
사용자가 원하는 대로 사이트, 앱을 제어할 수 있도록 하는 버튼, 스크롤 바, 브라우저 창 등 소프트웨어적인 장치가 마련되어 있습니다. 이것들을 우리는 UI(User Interface)라고 부릅니다.
또, 사용자와 소프트웨어 간이 아니라 소프트웨어와 소프트웨어 간의 소통을 돕는 창구도 필요할 것입니다.
예를 들어, 기상청 서버에서 데이터를 실시간으로 받아와 보여주는 웹, 앱 등이 있다고 하면 이 웹과 앱은 서버로부터 일정한 지정된 형식 으로 요청을 보내면 요청에 맞는 답이 올거라는 메뉴얼이 있으면 누구든 이걸 이용해서 기상청 서버를 사용하는 소프트웨어를 만들 수 있습니다.
이처럼 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단을 Application Programming Interface 라고 합니다.
간단하게, "이 함수를 넣으면 소프트웨어가 이렇게 해 준다"는걸 알면 개발자들은 그 명령어들로 코드를 짜면 되는거죠.
REST API는 오늘날 널리 사용되는 REST란 형식의 API입니다.
REST의 가장 중요한 특성은 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능하다는 것입니다.
일반적으로 API를 만들때면 URI를 통해 C.R.U.D(Create, Read, Update, Delete)를 수행합니다.
그런데 문제는 여기있습니다.
URI를 이상하게 지어도 목적에 맞는 수행만 잘 이루어진다면 상관이 없을 것이고 POST 요청 하나만으로도 CRUD의 모든 행동을 수행할 수 있습니다. 하지만 개발은 혼자하는 것이 아니기 때문에 누구든 각 요청의 의도를 쉽게 파악할 수 있어야 합니다.
따라서 아래와 같은 요청 형식을 따릅니다.
URI는 정보의 자원을 표현해야 한다.
자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE 등)으로 표현한다.
:id
와 같이 변하는 값은 하나의 특정 resource를 나타내는 고유값이어야 합니다.결국 REST API란, HTTP 요청을 보낼 때 어떤 URI에 어떤 메소드를 사용할지 개발자들 사이에서 널리 지켜지는 약속입니다.