개발일지
BE Day-3 본문
오늘 백엔드 수업에서
HTTP 통시
데이터 전송 실습
api를 만들어 보는 수업을 진행하였다
HTTP통신
프로토콜이란 단어가 나오는 데 우선 길이란 의미로 생각하자
문자열(텍스트)로 이루어진 데이터가 전송되는 길
이때 통신이 이루어지면서 백엔드와 프론트엔드의 데이터를 주고받을 수 있다
프론트에서 어떤 요청을 보내면 백엔드는 그 요청에 맞는 데이터를 저장, 수정, 삭제 등을 데이터베이스에 작업 후 응답으로 결과를 알려준다
이걸 요청과 응답이라고 한다
요청 request
응답 reponse
응답에는 받은 요청에 따라 결과를 응답하는 통신에 상태코드란걸 이용해 서로 알아보기 쉽게 한다
HTTP 메세지 구조
아래 보이 작성된 구조로 쓰임
HTTP 요청 메세지
- 시작 라인
- HTTP 메서드 (GET, POST 등)
- 요청 엔드포인트 ('/board')
- HTTP 버전
- 헤더
- Host : 요청을 보내는 브라우저의 주소
- Content-Type : 응답하는 메시지의 내용이 어떤 종류인지
HTTP 응답 메시지
- 시작 라인
- HTTP 버전
- HTTP 상태 코드 (200, 400, 500 등)
- 헤더
- Content-Type : 응답하는 메시지의 내용이 어떤 종류인지
요청과 응답 모두 body 가 들어갈 수 있으며, 실제 전송하려는 데이터가 이곳 body 객체에 담을 수 있습니다.
API
http통신으로 프론트에서 가입정보나 게시물 등록 같은 요청 하는 과정에서 저장할 데이터를 db에 저장할 수 있는 기능을 하는 함수를 api라고 한다
하나의 api로는 각 지정된 데이터만 요청 보내서 그에 맞는 api를 여러 개 만들어야 한다
api는 함수라고 생각하면 좋다 그래서
api에 요청할 때 보내는 데이터는 api함수로 들어갈 인자이고 응답으로 받게 되는 데이터가 api 함수의 return데이터입니다.
Rest-API, GtaphQL-API
api를 만들 때 우리가 배울 건 2가지가 Rest-API, GtaphQL-API 있다
Rest-api
api 이름 이주 소처럼 생김
프론트에서 요청한 데이터에 응답을할때 프론트에서 어떤 특정 데이터를 원할 때 그 데이터만 못 보냄 => 비효율적 graphql보다는 속도가 느림 그렇다고 rest가 느리지 않음
공공 api데이터가 rest-api로 되어있는 게 많아서 잘 알아야 함 아직 쓰는 회사들도 많음
GtaphQL-API
api 이름이 함수처럼 생겨서 좀 더 직관적임
프론트에서 요청한 특정 데이터만 응답으로 넘겨줄 수 있음 => 효율적 속도가 빠름
JSON
자바스크립트 객체 표기법(JavaScript Object Notation)
요청의 결과 타입을 json형식으로 표기
{
작성자: "훈이",
제목: "좋은 아침입니다"
}
http 메소드
get | 읽기 |
post | 쓰기 |
put | 업데이트 |
patch | 부분 업데이트 |
delete | 삭제 |
CRUD(크러드)
http 통신 메소드 api를 쓸때
만들어주고(create) 읽고(read) 수정하고(update) 삭제(delete)하는 API 4가지 방식(메서드)
API는 위에 포함된 최소 4개 이상의 API를 항상 이용해서 만듬
rest-API : 4가지 메서드(방법)가 존재
- 생성(create) : post
- 수정(update) : put,path
- 삭제(delete) : delete
- 조회(read) :
get graphql-API : 2가지 메서드 존재 :생성, 수정, 삭제를 MUTATION (데이터를 변경하는것)으로 바꿔주는것이고, 조회는 QUERY(변경하지않고 등록되어있는것을 꺼내가지고 가지고 오는것)로 바꿔주는것 => 변경을 하고 안하고의 차이로 MUTATION 과 QUERY 로 나뉨
- 생성, 수정, 삭제 : mutation
- 조회 : query
실제 프론트엔드에서 사용할 때, 즉 요청을 보내는 방법은 아래와 같습니다.