REST API는 Representational State Transfer의 약자로, 분산 시스템에서 네트워크 상에서 자원(리소스)을 표현하고 전송하기 위한 아키텍처 스타일 중 하나입니다. RESTful API는 이러한 REST 아키텍처 스타일을 따르는 API를 말합니다. RESTful API는 HTTP를 기반으로 하며, 각각의 자원은 고유한 URI(Uniform Resource Identifier)로 식별됩니다. 또한 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 해당 자원에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행합니다.
프로젝트에서 REST API를 사용한 이유는, RESTful API는 다양한 클라이언트들이 서버에 접근하여 데이터를 주고받기 쉽고 유연한 방식을 제공하기 때문입니다. RESTful API를 사용하면, 다양한 기기와 애플리케이션들이 서로 다른 데이터를 공유할 수 있으며, 새로운 기능을 추가하거나 변경할 때도 기존의 코드를 수정하지 않고도 확장이 가능합니다. 이를 통해 개발 생산성을 향상시킬 수 있습니다.
REST API 말고도 다른 비교할 만한 아키텍처 스타일로는 SOAP(Simple Object Access Protocol)가 있습니다. SOAP는 XML 기반의 메시지 교환 프로토콜로, 웹 서비스 간의 상호작용을 위해 사용됩니다. SOAP는 기능이 많고 보안성이 높으나, 복잡하고 무겁기 때문에 RESTful API와 달리 쉽게 접근하고 사용하기 어렵습니다. 따라서, 최근에는 RESTful API가 대세로 자리잡고 있습니다.
RestAPI와 GraphQL 모두 웹 애플리케이션에서 데이터를 가져오는데 사용되는 API입니다. 그러나 두 기술은 다음과 같은 차이점이 있습니다.
RestAPI는 URL의 경로와 HTTP 메소드(GET, POST, PUT, DELETE 등)를 사용하여 데이터를 요청합니다.
GraphQL은 쿼리 언어를 사용하여 클라이언트가 원하는 데이터를 설명합니다.
RestAPI는 서버에서 미리 정의된 데이터 구조를 반환합니다.
GraphQL은 클라이언트가 요청한 데이터에 맞게 동적으로 데이터 구조를 반환합니다.
RestAPI는 모든 요청에 대해 서버에서 정의된 데이터 구조를 반환하기 때문에, 필요하지 않은 데이터를 받아올 수 있습니다.
GraphQL은 클라이언트가 요청한 데이터에 대해서만 반환하기 때문에, 필요한 데이터만 받아올 수 있습니다.
RestAPI는 HTTP 캐싱을 사용하여 반복적인 요청을 줄일 수 있습니다.
GraphQL은 쿼리에 대한 결과를 캐싱하여 반복적인 요청을 줄일 수 있습니다.
RestAPI는 HTTP 메소드와 URL의 경로로 동작이 정의되어 있기 때문에, API의 문서화와 관리가 용이합니다.
GraphQL은 쿼리 언어를 사용하기 때문에, API의 문서화와 관리가 어렵습니다.
따라서, RestAPI는 간단한 요청에 대해서는 유용하지만, 복잡한 데이터 요청에 대해서는 데이터 양과 네트워크 부하 측면에서 비효율적일 수 있습니다. 반면, GraphQL은 복잡한 데이터 요청에 대해 유용하지만, API의 관리와 문서화가 어렵습니다.