우선적으로 두가지의 차이점을 알기 위해선 HTTP와 API가 무엇인지 알아야 한다.
HTTP는 HyperTextTransPort 의 약자로 텍스트/하이퍼텍스트를 전송하는 방식 또는 프로토콜 이다.
HTTP는 요청(request)와 응답(response)로 이루어진다.
HTTP는 stateless 상태를 보관하고 있지 않다.
즉 stateless는 상태를 보관하지 않으므로 클라이언트의 요청에 어느 서버가 응답해도 상관이 없다. 따라서 클라이언트의 요청이 대폭 증가해도 서버를 증설해 해결할 수 있다.
비연결성은 클라이언트가 서버에 요청을 하고 응답을 받으면 바로 TCP/IP 연결을 끊어 연결을 유지 하지 않는 것이다. 이를 통해 서버의 자원을 효율적으로 관리하고, 수 많은 클라이언트의 요청에도 대응할 수 있게 한다.
API는 각각의 하나하나 통신 요청에 대해 각기 다른 함수처럼 동작하는 것을 API 라고한다.
예를들어 _게시물 등록을 요청하는 API,게시물을 삭제하는 API 등등..
rest-api는 주소처럼 생겼다.
ex)네이버에서 1번 게시글 조회=>https://naver.com/board/1
요청을 할때 설치 해야 하는 프로그램은 axios 사용한다.
해당 관련된 데이터에 대해 응답을 받을때 백엔드에서 준비된 데이터를 한꺼번에 다 받아와야함..필요없는 부분도 다 받아와야한다..불필요한 데이터 까지 받아옴으로,렌더링을 위한 데이터를 받아올때 최적화 이슈가 있을수 있다.
[CRUD 에서의Rest-API]
Create:post
Update:put
Delete:delete
Read:get
일반함수와 같은 이름으로 생겼다.
ex)네이버에서 1번 게시글 조회=>board(1)
요청을 할때 설치 해야 하는 프로그램은 apollo-client를 설치 해야 한다.
백엔드에서 데이터를 넘겨줄때 원하는 데이터만 골라서 받아올수 있다. rest-api 보다 훨씬더 가벼운응답을 받음
[CRUD에서의 Graphql_API]
Create:Mutation
Update:Mutation
Delete:Mutation
Read:Query
java Script Object Notation 이라는 약자로 자바스크립트 객체 표기법 라는 뜻이다.
하지만 Json에서는 객체를 문자열로 해서 보낸다.
그이유는?? HTTP로 통신을 하기 때문에, HTTP는 텍스트/하이퍼텍스트로 전송하는 방식이기 때문에.
HTTP 응답으로 오는 Json 형태로는 안에는 body와 header가 있고, body는 요청에 대한 응답 내용,header는 요청에 대한 응답 관련된 정보 및 형식 등등 담겨있다.