본문 바로가기
컴퓨터&CS

API 활용 및 데이터 통신: REST API vs. GraphQL & WebSocket vs. SSE

by 노잉맨 2025. 2. 3.
API 활용 및 데이터 통신: REST API vs. GraphQL & WebSocket vs. SSE

API 활용 및 데이터 통신: REST API vs. GraphQL & WebSocket vs. SSE

API는 클라이언트와 서버 간의 데이터 통신을 위한 중요한 기술입니다. 이번 글에서는 REST API와 GraphQL의 차이점, 그리고 WebSocket과 SSE(Server-Sent Events)의 비교 및 활용을 다룹니다.

1. REST API vs. GraphQL

1.1 REST API 개요

REST API는 HTTP 요청을 기반으로 데이터를 주고받는 가장 널리 사용되는 방식입니다.

  • 리소스 기반의 엔드포인트 설계 (ex: /users, /posts)
  • GET, POST, PUT, DELETE 등의 HTTP 메서드 활용
  • 단순한 구조이지만 오버페칭(over-fetching) 및 언더페칭(under-fetching) 문제 발생 가능

GET /users/{id} HTTP/1.1
Host: example.com
        

1.2 GraphQL 개요

GraphQL은 클라이언트가 필요한 데이터만 요청할 수 있는 쿼리 언어 기반의 API 방식입니다.

  • 하나의 엔드포인트에서 다양한 데이터를 요청 가능
  • 필요한 데이터만 가져와 네트워크 비용 절감

query {
    user(id: 1) {
        name
        email
    }
}
        

2. WebSocket vs. SSE(Server-Sent Events)

2.1 WebSocket 개요

WebSocket은 클라이언트와 서버 간의 양방향 통신을 지원하는 프로토콜입니다.

  • 연결 유지(Connection 유지)를 통한 실시간 데이터 송수신 가능
  • 채팅 애플리케이션, 게임, 실시간 알림 등에 활용

const socket = new WebSocket("wss://example.com");
socket.onmessage = (event) => {
    console.log("Received data:", event.data);
};
        

2.2 SSE(Server-Sent Events) 개요

SSE는 서버에서 클라이언트로 단방향 데이터 스트리밍을 제공하는 방식입니다.

  • 브라우저 네이티브 지원 (EventSource API)
  • 주로 뉴스 피드, 라이브 데이터 업데이트 등에 사용

const eventSource = new EventSource("/stream");
eventSource.onmessage = (event) => {
    console.log("New event:", event.data);
};
        

3. 결론: 언제 어떤 방식을 선택해야 할까?

  • REST API: 표준적인 HTTP 요청 기반 API로 대부분의 애플리케이션에서 활용 가능
  • GraphQL: 오버페칭과 언더페칭 문제를 해결하고 유연한 데이터 요청이 필요할 때
  • WebSocket: 실시간 양방향 통신이 필요한 경우 (예: 채팅, 스트리밍 서비스)
  • SSE: 서버에서 클라이언트로 지속적인 업데이트가 필요할 때 (예: 뉴스 피드, 주식 시세 업데이트)

각 기술의 장단점을 이해하고 프로젝트 요구 사항에 따라 적절한 방식을 선택하세요!