얄팍한 코딩사전의 'REST API가 뭔가요?' 동영상을 보고 내용을 간추려서 정리하였습니다. 흔히들 RESTful한 개발을 지향하는 것이 좋다고 하는데 이를 위해서 REST API에 대해 알아보겠습니다.
REST API는 정보를 주고 받는데 있어서 개발자들 사이에 널리 사용되는 형식입니다. 이를 이해하기 위해, 우체국의 송장을 예로 들어보겠습니다. 송장이 가진 형식이 있는 것처럼, REST API도 형식에 맞춰 기능들을 생성하면 됩니다.
어떤 기계를 만들 때, 사용자가 그 기능들을 전부 활용할 수 있도록 제어장치를 제공해야 합니다. TV의 리모콘, 컴퓨터의 키보드와 마우스 등이 이에 해당합니다.
예를 들어, 기상청에서 날씨 정보를 제공하는 서버가 있다고 해봅시다. 웹사이트나 앱에서 이 날씨 정보를 기상청 서버로부터 얻어갑니다. 기상청 서버와 앱 사이에서 정보를 요청하고 전송하는 것은 미리 작성된 소프트웨어를 통해 이루어집니다. 그리고 이런 정보 요청에는 지정된 형식이 필요합니다. 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단이 바로 API입니다.
REST API는 서비스에서 널리 사용되는 API 형식 중 하나입니다. 프론트엔드 웹에서 서버에 데이터를 요청하거나, 배달 앱에서 서버로 주문을 요청하는 것처럼, 서비스 간에 데이터를 주고 받는 데 사용됩니다.
REST API의 중요한 특성은 각 요청이 어떤 동작이나 정보를 위한 것인지 그 요청의 모습 자체로 추론 가능하다는 점입니다. 이를 통해, 서비스의 기능을 개발하는 개발자들이 이해하고 협업하기 더 쉬워집니다.
예를 들어, 학원의 반과 학생들에 대한 정보를 요청하는 API를 만든다고 가정해봅시다. 만약 RESTful 하지 않게 만들면 아래와 같이 될 수 있습니다:
하지만, RESTful하게 만든 API는 요청을 보내는 주소만으로도 대략 이 요청이 어떤 요청인지 파악이 가능합니다:
이런식으로 URI에 자원을 구조와 함께 나타내는 RESTful한 형태의 구분자를 사용합니다. CRUD 작업을 위해 조회, 삽입, 삭제, 수정의 메소드를 사용하며, HTTP 메세지 요청을 보낼 때는 HTTP 프로토콜을 준수합니다.
또한, REST API는 HTTP 메소드인 GET, POST, DELETE, PUT, PATCH 등을 사용하여 요청을 처리합니다.
REST API를 설계할 때, URI는 명사들로 이루어져야 하며, HTTP 메소드와 URI로만으로도 요청의 의도를 파악할 수 있도록 설계하는 것이 중요합니다.
따라서, 어떤 서비스를 개발하든지 RESTful한 API를 구현하는 것이 좋습니다. REST의 원칙에 기반한 형식을 따르는 API는 어떤 기술이나 플랫폼에도 구애받지 않으며, 서비스의 기능을 개발하는 개발자들 사이의 협업을 용이하게 해줍니다.
마지막으로, REST API의 대안으로 GraphQL이 등장하였는데, 이 또한 유명한 API 형식입니다. 하지만 여전히 RESTful한 서비스를 구현하는 것이 일반적입니다.