
먼저 api란 애플리케이션 프로그래밍 인터페이스(Application Programming Interface)의 줄임말로 애플리케이션 소프트웨어를 구축하고 통합하는 정의 및 프로토콜 세트입니다.
사용자가 원하는 것을 시스템에 전달할 수 있게 지원하여 시스템이 이 요청을 이해하고 이행하도록 할 수 있습니다.
소비자(클라이언트)에게 필요한 컨텐츠(요청) <->생산자(서버)에게 필요한 컨텐츠(응답)ex) 게시물 저장 API,프로필 조회 API, 검색 API
REST(Representational State Transfer)api란?
Rest-api는 주소처럼 생겼습니다. ex)https://naver.com/board/1
Rest- api의 특징으로는 모든 관련데이터를 전달해야 합니다.
서버와 클라이언트의 역할을 정확하게 분리 합니다.
postman을 통해 연습해 볼 수 있습니다.
ex) 여기서 3002는 서버번호이다. 여기서 GET은 데이터를 조회한다는 뜻이며

Body창을 통해 요청을 하며 response 창을 통해 응답을 받을 수 있다.

※RESTful하다 라는 뜻은 슬래시를 통해 계층관계를 표시한다던가 숫자는 id를 나타낸다든가 동사보단 명사를 위주로 쓴다 get과 post를 board/1 으로 맞춰 주는 등
REST API의 설계의도를 명확하게 지켜주는 것을 말합니다.
GraphQL 은 Graph Query Language의 줄임말이다. 즉 Query를 만들기 위해 사용되는 컴퓨터 언어 입니다.
rest - api의 단점을 커버 하기 위해 페이스북에서 만든 쿼리언어입니다.
GraphQL의 경우에는 일반 함수처럼 생겼습니다. ex)board(1)
특징으로는 필요한 데이터만 받을 수 있다는 장점이 있습니다.
(=HTTP응답의 횟수와 HTTP응답의 size를 줄일 수 있습니다.)
헤더로 보내는 내용의 형태는 JSON형식입니다.
※JSON: 자바스크립트 객체 표현법
//상품 검색하기
query{
fetchProduct(productId:"9c0e84c1-6d33-4cc2-bb76-bc42638e5f01"){
price
}
}
//상품 업로드하기
mutation {
createProduct(seller:"도토리",createProductInput:{
name: "방망이",
detail: "짱",
price: 15000
} ){
_id
number
message
}
}
rest api의 경우에는 주소형식으로 되어 있어 그 형식만으로도 대략적으로 이게 어떤 요청인지 알 수 있다는 장점이 있다.
grapgql API는 Rest-api와 다르게 필요한 데이터만 받을 수 있다는 장점이 있습니다.
예를 들자면 전체학생의 이름과 번호가 필요한 상황에서 Rest-api의 경우 전체 학생 프로필을 가져온다면 Graphql은 전체학생의 이름과 번호만 가져올 수 있다.

대부분의 요청이 CRUD요청일 때, 다양한 요청에 대해 응답할 수 있어야 하는 경우는 GraphQL이 유리하고 요청의 구조가 정해져있고 File이나 Text로 처리되지 않는 요청이 있을 경우 REST-api를 사용하는 것이 유리하다.