REST API와 GraphQL이란 무엇일까?

2025. 11. 30. 08:00·공부기록/Web

둘다 API 구조를 설계하고, 데이터를 처리하기 위한 방식이다.

RestAPI 란?

HTTP 메서드(GET, POST, PUT, PATCH 등)를 이용해서 API를 구축하기 위한 아키텍처 스타일이다. 

RestAPI는 일반적으로 URL을 사용해서 사용자가 요청한 주소를 식별하고,

JSON 형태로 데이터를 반환한다. REST API는 상태를 저장하고 있지 않는다.(stateless)

그래서 클라이언트에서 서버로 요청을 보낼 때마다 필요한 모든 정보를 포함한다.

 

RestAPI의 장점

1. 개발자 친화적이다. 

: URL과 HTTP 메서드를 사용하여 전체적인 구조를 나타내기 때문에 굉장히 간단한 구조를 가지고 있다.

: 또 RestAPI 구축과 테스트/문서화 목적의 라이브러리와 도구가 많다.

 

2. 캐싱이 가능하다.

: 캐싱을 이용해서 서버에 대한 요청을 줄여 API 성능을 향상할 수 있다.

 

3. 호환성이 좋다.

: 거의 모든 웹 브라우저와, 모바일 장치, IoT 장치 등 광범위한 클라이언트 및 서버와 호환이 가능하다.


GraphQL 이란?

🧐 페이스북이 만든 데이터 쿼리 언어로, 서버와 클라이언트 통신이 가능하다!
      #하나의_엔드포인트 #클라이트_별_데이터구조_다르면_굿 #multi-part_form_데이터는_어려워!

 

RestAPI 이후 새롭게 API 처리를 위해 등장한 개념이다.

페이스북에서 개발한 API용 쿼리 언어로, 클라이언트가 요청 시 모든 데이터를 수신한다. 

즉, 하나의 엔드포인트로 모든 요청을 처리한다.

클라이언트가 선택해서 필요한 데이터만 받을 수 있다. (over-fetching을 해결할 수 있다.)

복잡한 데이터 관계도 한 번의 요청으로 가져올 수 있다.

 

GraphQL의 장점

1. 효율을 높일 수 있다.

2. 유연하다. 클라이언트 요구사항 변화에 따라 서버를 바꾸지 않고도 데이터 구조 조정이 가능하다.

 

GraphQL의 단점

JSON 형태의 데이터 송수신에 최적화되어 있다.

그래서 Multi-Part 처리나 파일 업로드는 기본 구조에 포함되어 있지 않다

 

 


언제 REST API를, 언제 GraphQL을 써야할까?

REST API 이 적합한 환경

서버가 미리 정의한 자원 구조가 안정적이고 변하지 않는다. 요청과 응답이 단순하고 명확하다.

따라서 다음과 같은 상황에서 사용하면 좋다.

 

- CRUD 위주의 서비스

- 요청 마다 데이터 구조가 크게 변하지 않는 경우

- 서버와 클라이언트 모두 단순하게 유지하고 싶은 경우

 

예시 :

GET /users/123         # User 객체
GET /users/123/posts   # User의 posts

 

위 예시를 보면 User와 Post가 관계가 있지만 REST에서는 각 자원마다 별도로 요청해야 한다.

 

GraphQL 이 적합한 환경

디음과 같은 상황에서 사용하면 용이하다.

 

- 클라이언트마다 필요한 데이터 구조가 다를 때

- 복잡한 데이터 관계가 있는데, 한 번의 요청으로 여러 데이터를 가져오고 싶을 때

- 서버 구조는 자주 바꾸기 어려운데, 클라이언트 요구는 빠르게 변화하는 경우

- 여러 자원을 한 번에 조회해야 하는 경우

 

: 클라이언트별로 맞춤형 데이터를 전송하고, 다양한 데이터를 조합해서 조회할 수 있따는 특징이 있다.

따라서 네트워크 효율도 향상되고, API 호출 수도 감소시킬 수 있다는 장점이 있다.

 

예시 :

query {
  user(id: 123) {
    name
    posts {
      title
    }
  }
}

 

한 번의 트리 구조 요청으로 표현할 수 있다.

저작자표시 비영리 변경금지 (새창열림)

'공부기록 > Web' 카테고리의 다른 글

[ FastAPI ] 1. MAC에서 FastAPI 설치하고 간단한 서버 실행하기  (0) 2025.11.12
SOP(동일 출처 정책)과 CORS(교차 출처 리소스 공유)란 무엇일까?  (0) 2025.11.10
[ FastAPI ] 0. FastAPI란?  (0) 2025.11.09
'공부기록/Web' 카테고리의 다른 글
  • [ FastAPI ] 1. MAC에서 FastAPI 설치하고 간단한 서버 실행하기
  • SOP(동일 출처 정책)과 CORS(교차 출처 리소스 공유)란 무엇일까?
  • [ FastAPI ] 0. FastAPI란?
Lyv
Lyv
  • Lyv
    inimizi
    Lyv
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 이것저것 도전 (5)
        • 공모전 (0)
        • 우테코 (5)
      • PS (16)
        • 삼성기출 (2)
        • LeetCode & Codility (4)
        • Programmers (6)
        • BaekJoon (4)
      • 공부기록 (33)
        • CS (16)
        • 영어 (1)
        • iOS (1)
        • 프로그래밍 언어 (0)
        • Web (4)
        • Linux (1)
        • Docker (2)
        • Network (4)
        • IaC (3)
      • 프로젝트 경험 (0)
      • DailyLog (4)
      • 취준Log (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    os
    우테코
    FastAPI
    운영체제
    IAC
    코테
    DP
    정처기
    문제풀이
    자동화
    C++
    공부기록
    이미지
    운영체제intro
    스케줄링
    대학생
    컨테이너
    til
    ansible
    우테코프리코스
    백준
    네트워크
    프리코스회고
    PS
    리눅스
    프로그래머스
    manifest
    c언어
    디자인패턴
    정처기실기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Lyv
REST API와 GraphQL이란 무엇일까?
상단으로

티스토리툴바