250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 리액트 메모이제이션
- toggle-btn
- 리액트 메모
- 웹팩 기본개념
- 항해99 부트캠프
- chromatic error
- 리액트 렌더링 최적화
- jwt
- 렌더링 최적화
- Js module
- FP 특징
- 자바스크립트 엔진 v8
- 실행컨텍스트
- 테스트 코드 툴 비교
- next js
- 항해99 미니프로젝트
- 함수형 프로그래밍 특징
- 항해99 사전스터디
- 타입스크립트
- js배열 알고리즘
- gql restapi 차이
- 코어자바스크립트
- 리덕스
- v8 원리
- JS module system
- this
- 웹 크롤링
- 항해99
- 알고리즘
- 리액트
Archives
- Today
- Total
Jaeilit
Graphql 과 RESTful API 차이점 본문
728x90
간혹 Graphql 과 RESTful API 의 차이점에 대해서 질의를 받는 경우가 있어서 한번 비교해보고 쉽게 정리 해보려고 합니다.
1. 데이터 쿼리 방식
- REST API는 미리 정의된 엔드포인트를 통해 리소스에 접근합니다. 각 엔드포인트는 특정 리소스나 리소스 집합에 대한 정보를 반환합니다. 클라이언트는 서버가 제공하는 방식대로 리소스를 요청해야 하며, 개별 엔드포인트를 통해 데이터를 가져옵니다.
- GraphQL은 단일 엔드포인트를 사용하며, 클라이언트는 필요한 데이터의 구조를 정의하는 쿼리를 전송합니다. 이를 통해 클라이언트는 필요한 데이터만을 정확히 요청할 수 있으며, 여러 리소스를 하나의 요청으로 가져올 수 있습니다.
2. 오버페칭과 언더페칭
- REST API에서는 오버페칭(필요 이상의 데이터를 받는 경우)과 언더페칭(필요한 데이터를 충분히 받지 못하는 경우) 문제가 발생할 수 있습니다. 특히, 복잡한 UI를 가진 애플리케이션에서 여러 엔드포인트를 통해 데이터를 조합해야 할 때 이 문제가 두드러집니다.
- GraphQL은 이러한 문제를 해결합니다. 클라이언트가 정확히 필요한 데이터의 구조를 요청함으로써 오버페칭과 언더페칭 문제를 방지할 수 있습니다.
3. 개발 및 유지 보수의 용이성
- REST API는 각 리소스에 대해 별도의 엔드포인트를 개발하고 유지 보수해야 합니다. 애플리케이션이 복잡해질수록 관리해야 할 엔드포인트의 수가 증가합니다.
- GraphQL은 단일 엔드포인트를 통해 모든 데이터 요청을 처리합니다. 서버 측에서는 클라이언트의 쿼리를 이해하고 처리할 수 있는 방법을 제공하기만 하면 됩니다. 이는 서버와 클라이언트 간의 계약을 간소화하고, 개발 및 유지 보수를 용이하게 합니다.
4. 타입 시스템
- GraphQL은 강력한 타입 시스템을 제공합니다. 서버는 스키마를 통해 데이터 타입과 구조를 명시적으로 정의하며, 클라이언트 쿼리는 이 스키마를 기반으로 검증됩니다. 이는 데이터 일관성을 보장하고, 오류를 사전에 방지할 수 있게 합니다.
- REST API는 HTTP와 JSON을 기반으로 동작하지만, 엄격한 타입 시스템을 내재적으로 가지고 있지는 않습니다. 데이터 타입과 구조는 개발자가 문서화하고 합의를 통해 관리해야 합니다.
5. 요청 메서드
- GraphQL은 내부적으로 모든 클라이언트 요청을 POST HTTP 요청으로 전송합니다.
- REST API 아키텍처에서는 서버가 리소스에 대해 정의한 GET, POST, PUT, DELETE 메서드로 요청을 전송합니다.
728x90
'TIL' 카테고리의 다른 글
토글버튼 만들어보기 (0) | 2024.06.20 |
---|---|
렌더링과 리렌더링 최적화(메모이제이션) (0) | 2024.05.02 |
스토리북 chromatic action error (0) | 2024.03.08 |
자바스크립트의 비동기 프로그래밍 Promise (0) | 2023.11.16 |
자바스크립트 V8 엔진 (1) | 2023.10.26 |