HTTP
란 두 컴퓨터간에 텍스트 데이터를 주고 받는 길이다.
HTTP라는 길로 요청(request)
과 응답(response)
을 주고 받을 수 있다.
웹 브라우저에서 홈페이지(프론트엔드)가 실행중이라면, 작성한 텍스트 데이터
를 HTTP를 통해
백엔드 컴퓨터로 보내고 백엔드 컴퓨터에게 이 데이터를 데이터베이스
에 저장 해달라고 요청한다.
요청을 받은 백엔드 컴퓨터가 성공, 실패 등 처리 결과
를 응답한다.
💡 백엔드 컴퓨터는 응답할 때,
응답 상태코드
라는 것도 함께 보내준다!응답코드는 100~599까지의 숫자로 구성되어 있다.
- 성공 (2XX)
- 프론트엔드 에러 (4XX)
- 백엔드 에러 (5XX)
💡 데이터베이스에 바로 요청하면 안되는 이유!
보안 및 데이터 정제 등의 이유로 백엔드에서 검증 과정을 거쳐야 하기 때문에
아무나 함부로 데이터베이스에 요청을 할 수는 없다!!
API
란 HTTP 요청
을 백엔드 컴퓨터에 보냈을 때 실행되는 백엔드 기능이다.
프론트엔드에서 HTTP라는 길을 통해 게시물 데이터를 백엔드로 보내 저장시킬 수 있다.
그런데 만약 게시물이 아닌 프로필 데이터를 저장하고 싶다면?
그러기 위해선 여러 개의 HTTP라는 길
이 존재해야하고 각각의 요청마다 담당자가 필요하다.
이 담당자가 바로 API
이다.
💡 API는 기능이자 함수이다!
API는 백엔드 개발자가 만든 함수이다. 함수에는 인자와 return 데이터가 있으며
API에 요청을 할 때 보내는 데이터는 API함수에 들어갈인자
이고, 응답으로 받게 되는 데이터가
API 함수의return 데이터
이다!
API의 종류에는 크게 Rest-API와 Graphql-API가 있다.
1. 함수 이름의 차이
- rest-api는 api 이름이 마치 홈페이지 주소처럼 생겼다.
- graphql-api는 api 이름이 일반적인 함수와 같다.
2. 응답 결과물의 차이
- rest-api는 백엔드 개발자가 만든 함수에서 보내주는 모든 데이터를 받아야만 한다.
- graphql-api는 백엔드 개발자가 만든 함수에서 필요한 데이터만 골라 받을 수 있다.
graphql api
는 필요한 데이터만 골라 받을 수 있는 장점이 있어서, rest api 보다 효율적인 통신
을 할 수 있다.
🤔 그럼 rest-api는 배우지 않아도 될까?
rest-api를 배워야하는 이유
- 많은 회사들이 아직
rest-api
를 사용하고 있다.오픈 api
에서 일반적으로 rest를 제공하는 경우가 많다.
3. 설치해야하는 프로그램의 차이
각 api에서 요청하는 담당자가 다르다.
요청 담당자
란 프론트엔드에서 설치하는라이브러리
이다.
rest-api
: 요청 담당자axios
graphql-api
: 요청 담당자apollo-client
HTTP 통신
으로 데이터를 주고 받을 때 객체 자체를 주고 받을 수 없다.
따라서 객체를 문자열
로 묶어서 객체를 담은 문자열을 보내게 되는데 객체를 담은 문자열을 객체 표기법 즉, JSON
이다.
받아온 JSON 데이터는 프론트엔드에서 문자열을 벗겨 객체로 사용하게 된다.
응답으로 주고 받은 JSON
은 응답의 바디 부분이다.
응답에는 헤더
와 바디
부분으로 나뉘는데
바디에는 JSON
이 들어가고, 헤더에는 바디와 관련된 요약 정보
가 들어가게 된다.
요약 정보 : 응답을 보내는 사이트, 바디의 형태가 JSON인지 등…
api는 크게 네 가지 방식으로 구분할 수 있다.
- 새로운 것을 생성하는 api :
CREATE
- 기존의 것을 조회하는 api :
READ
- 기존의 것을 수정하는 api :
UPDATE
- 기존의 것을 삭제하는 api :
DELETE
rest-api에서는 생성 post
, 수정 put
, 삭제 delete
, 조회 get
메소드를 사용하고
graphql-api에서는 생성, 수정, 삭제에 mutation
, 조회에 query
메소드를 사용한다.
사용 방법
api 명세서
란 api의 사용 설명서이다.
홈페이지 서비스를 만들기 전, 백엔드 개발자가 만들어 놓은 api가 어떻게 구성되어 있는지 확인하기 위해 필요하다.
api 명세서
는 백엔드 개발자에게 받아야 하며 백엔드 개발자는 자신이 만든 api를 직접 문서 형태로 작성하거나 rest-api는 swgger
라는 프로그램을 설치해서 작성하고 graphql-api는 playground
를 사용하여 작성한다.
playground
에 접속하면 DOCS를 열어볼 수 있다.
DOCS는 해당 API의 설명서이며, 사용할 수 있는 mutation 메서드와 query 메서드 목록이 적혀있다.
graphQl docs의 필수값
- ! 는 무조건 보내줘야하는 필수값이다.
- [!]는 있다면 무조건 보내줘야하는 조건 필수값이다.
1. 새로운 data를 만들기 위해 mutation
을 사용한다.
2. mutation문
형식 내 createBoard
를 사용한다.
3. 등록 시 사용되는 인자의 값
을 입력한다.
4. data 등록이 완료 되었을 경우, return
받으려는 정보를 입력한다.
2일차에 혼자 해결할 수 없었던 회원가입 로직을 코드 리뷰 시간에 배우게 되었다!
혼자서 이것저것 시도해본 시간 덕에 레퍼런스 코드를 보고 바로 이해할 수 있었다.
의미있는 시간을 사용한 것 같아 기분이 좋았다.
마크업한 웹페이지를 실제로 동작하게 해주는 역할 중 하나인 통신에 대해 배우기 시작하니까 더 흥미로워졌다.
항상 데이터를 어떤 방식으로 가져오고 전달하는지 궁금했는데 궁금했던 부분이 조금씩 풀리는 느낌이다.
1. Rest-API 연습하기
2. Graphql-API 연습하기