API란 HTTP 요청을 Back-end 컴퓨터에 보냈을때 실행되는 Back-end 기능이다.
쉽게 예를 들면 Back-end 개발자가 만든 함수와 같은 것 이다.
Front-end에서 HTTP라는 길을 통행 데이터를 Back-end에 보내 데이터 베이스로 저장시킨다.
API는 여러 종류가 있고, Front-end에서 종류에 맞게 데이터를 보내면 종류에 따라 API가 실행되어 데이터를 데이터 베이스에 저장시킨다.
rest-api는 sever api를 만드는 방법론 중 하나이다.
rest-API는 API 이름이 홈페이지 주소 처럼 생겼다.
axios.get(https://www.naver.com/board)
rest-api는 위와 같이 엔트포인트가 존재하고 이 엔드포인트로 구분하여 데이터를 요청하고 등록, 수정할 수 있다.
rest-API는 axios라는 라이브러리를 사용하면 쉽게 사용할 수 있고, 백엔드에서는 express를 이용하여 서버를 구축할 수 있다.
api를 이용해 데이터를 조회, 등록, 수정, 삭제를 할 수 있으며 이를 CRUD라고 부르며 rest-api에서는 아래와 같이 구분할 수 있다.
생성(CREATE) - POST
수정(UPDATE) - PUT
삭제(DELETE) - DELETE
조회(READ) - GET
restful은 rest-api를 만들때 이를 관리하기 쉽게 하는 기법중 하나로, 엔드포인트를 만들때 같은 이름으로 통일하고 메서드를 통해 이를 구분을 해서 보다 쉽게 엔트포인트를 관리하는 것이다.
graphql은 Graph Query Lacnguage의 줄임말이다.
Query Language는 정보를 얻기 위해 보내는 질의문을 만들기 위해 사용되는 언어의 일종이다.
이러한 graphql이 나오게 된 이유는 rest 방식의 api는 데이터를 조회할 때 모든 데이터를 받아와야 했지만 graphql은 자기가 원하는 데이터만 골라서 받을 수 있고 보다 편하게 데이터를 수정할 수 있도록 표준화된 언어를 만들게 된 것이다.
graphql-api는 rest-api와 달리 일반 함수와 같은 형태를 가지고 있다.
getBoard(1)
graphql-api를 보다 쉽게 사용할수 있게 도와주는 라이브러리로 apollo-client가 존재한다.
graphql-API의 CRUD 메서드는 rest-api와 조금 다르고 아래와 같다.
생성(CREATE) - MUTATION
수정(UPDATE) - MUTATION
삭제(DELETE) - MUTATION
조회(READ) - QUERY
위와 같이 데이터베이스를 직접 수정해야 하는 것들은 mutation이고 오직 조회만 해도 된다면 query라고 한다.
실제 사용법
import { useMutation, useQuery } from '@apollo/client'
const result = useMutation(API이름)
const result = useQuery(API이름)