728x90
REST API
- 소프트웨어 간 정보를 주고받는 방식
- GraphQL 이전부터 사용
- GraphQL은 '다른' 방식 - 용도와 작업특성에 따라 적합한 것을 사용하기 위해
Data
[
{
name: '30분짜장',
category: 'chinese',
tel: '##-####-####',
rating: 4.6
},
{
name: '피자파자마',
category: 'italian',
tel: '##-####-####',
rating: 3.9
},
{
name: '공중떡볶이',
category: 'snack',
tel: '##-####-####',
rating: 4.9
},
///...
]
- REST API는 데이터를 주고받을 주체들간 약속된 형식
- URI 형식(어떤 정보를) + 요청 방식(어떻게 할 것인가)요청 형식용도
GET 조회 POST 생성 PUT/PATCH 수정 DELETE 삭제
- URI 형식(어떤 정보를) + 요청 방식(어떻게 할 것인가)요청 형식용도
실습 - Code
환경 설정
# nodemon 설치
npm install -g nodemon
# 프로젝트 모듈 설치
npm i
# 프로젝트 실행 명령어
nodemon index.js
# 브라우저에서 localhost:3000 으로 확인
API 리스트
- 팀(들), 팀원 목록 받아오기요청 형식URI
GET localhost:3000/api/team GET localhost:3000/api/team/{id 번호} GET localhost:3000/api/people GET localhost:3000/api/people?{변수}={값}&{변수}={값} ... GET localhost:3000/api/team/{id 번호}/people - 팀 추가하기요청 형식URI
POST localhost:3000/api/team - 팀 수정하기요청 형식URI
PUT localhost:3000/api/team/{id 번호} - 팀 삭제하기요청 형식URI
DELETE localhost:3000/api/team/{id 번호}
REST API의 한계
Case 1. 각 팀의 매니저와 오피스 호수만 필요할 때 - Overfetching
[
{
"manager": "Mandy Warren",
"office": "101A",
},
{
"manager": "Stewart Grant",
"office": "101B",
},
{
"manager": "Smantha Wheatly",
"office": "102A",
},
// ...
]
- 필요한 정보만 받아올 수 없음
Case 2. 특정 팀의 매니저와 팀원들 명단이 필요할 때 - Underfetching
{
"manager": "Mandy Warren",
"members": [
{
"first_name": "Nathan",
"last-name": "Jenkins"
},
{
"first_name": "Isabella",
"last-name": "Martin"
},
{
"first_name": "Kate",
"last_name": "Owen"
},
//...
]
}
- 필요한 정보들을 요청 한 번에 받아올 수 없음
REST API의 한계와 GraphQL의 사용 이유
: Overfetching과 Underfetching을 해결하기 위해
Reference
728x90
'GraphQL' 카테고리의 다른 글
[GraphQL] Query & Mutation (0) | 2022.12.26 |
---|---|
[GraphQL] Apollo 서버 구축 (0) | 2022.12.26 |
[GraphQL] GraphQL & Apollo (0) | 2022.12.26 |