API는 크게 두가지로 나뉜다.
둘의 차이
rest-API 는 API이름이 마치 홈페이지 주소 같이 생겼다.
반면 graphql-API는 이름이 일반적인 함수처럼 생겼다.
이렇게 봐서는 잘 감이 오지 않았다. 특히 grqphql의 경우에 일반적인 함수처럼 생겼다는게 뭐지?? 라고 한참을 봐야했다.
일단 수업을 진행하면서 차이점들을 더 알아보자
rest-API는 응답결과로 벡엔드에서 만든 함수에서 보내주는 모든데이터를 받아와야햐 무겁다.
그러나 graphql-API에서는 필요한 데이터만 받을 수 있어 가볍다고할 수 있다.
가벼우면 성능이 좋고, 무거우면 그만큼 데이터를 많이가져와 속도도떨어지는 등 성능이 떨어진다고 볼 수 있다.
따라서 각기 API에 전송요청시에 사용하는 프로그램명(라이브러리)이 다른데 rest의 경우에는 axios, graphql의 경우에는 apollo-client를 사용한다.
grphql은 필요한 데이터만 골라받을 수 있어 효율적인 통신을 할 수 있다.
--> 오래된 서비스의 경우에는 rest-API를 사용하고 있다고하고, 대부분의 open-API도 rest방식이라고 하는데, grphql은 왜 만들어졌을까??
**graphql의 경우에는 페이스북에서 만든 API이다. 페이스북의 경우 많은 사용자들의 데이터를 처리해야 하기에 기존의 rest의 방식을 사용하면 아무래도 성능이 많이 떨어질 수 밖에 없다.
페이스북에서는 이 수많은 데이터를 처리하기위헤 graphql을 만들었고, 이것을 페이스북 뿐만 아니라 airbnb, github등에서도 사용하게되었다.**
효율적인 수업방식을 진행하기위해 graphql을 중심으로 수업을 진행하는데, rest도 익혀야 rest를 사용하고 있는 회사나, 다른 API를 이용시에 잘 사용할 수 있다.
크게 4가지로 구분된다.
C => Create 생성하고
R => Read 조회하고
U => Update 수정하고
D => Delete 삭제하고
정확히는 조회에 상세조회와 목록보기로 나누어져 5개로 나눠진다고도 볼 수 있다.
아래는 각 API에서 사용하는 방법이다
rest의 경우에는 4가지가 각각 post, put, delete, get으로 나뉘는데 이 옵션들을 메서드
라고 부른다.
그런데 graphql에서는 두가지로 나누어진다.
메서드 graphql의 경우
생성, 삭제, 수정은 직접 그 데이터에 뭔가를 가해 변형하는것이다. 따라서 하나로 묶어 Mutation이라는 메서드를 사용하고,
조회의 경우에는 단지 불러오기만 하면되기에 Query라는 메서드를 사용한다.
이때 Mutation은 데이터를 건드리는 것이기에 위험한 부분으로, 그렇지 않은 Query는 위험하지 않는부분으로 본다.
API 명세서란?
API 사용 설명서 라고 할 수 있다.
벡엔드 개발자로부터 받아 사용하는데 해당 명세서를 직접 문서형태로 작성해 주거나, swagger이라는 프로그램을 설치해 만든다고한다.
해당 명세서를 docs라고 부르기도 한다.!!
grqphql의 경우에 일반적인 함수처럼 생겼다 라는 부분!
이런식으로 API 이름뒤에 소괄호가 들어가 함수의 모양이 되었다.