데이터 주고받기

김하은·2023년 5월 30일
0

프론트와 백의 데이터 주고받는 것을 위해서는 통로가 필요하다.
파일을 전송하는 통로인 FTP(파일 트랜지션 프로토콜),
간단한 메일을 전송하는 통로인 SMTP(심플 메일 트렌지션 프로토콜),
텍스트와 하이퍼텍스트를 전송하는 통로인 HTTP가 있다.
(하이퍼텍스트: HTML을 의미 = 하이퍼텍스트 마크업 랭귀지)

물론 인터넷 연결이 되어있다는 사전 조건이 충족되어있어야 데이터 주고받는 것이 가능하다.

우리가 사용할 통신은 HTTP이다.
라이브러리와 인터넷을 사용한다.

HTTP통신규칙
하나의 컴퓨터가 요청을 하면
반드시 그것에 대한 응답을 전해주어야한다

  • 프론트에서 벡으로 데이터를 요청하면,
    벡에서는 그것을 받아 DB에 저장하고, 저장결과를 프론트에 알려준다.(상태코드 200)

상태코드 => 왜있는것일까?

성공시엔 성공메세지를,
실패시에는 실패메세지를 보내는데, 컴퓨터에서 인식할 수 있게 상태코드라는것을 사용해 통일시키는것이다.

  • 위키백과 참조하여 여러 상태코드 보기

각각 요청을 처리해줄 담당자가 필요하다.
이 요청들을 API라고 부르고 이것은 함수로 이루어져있다.


API


rest와 graphql의 가장 큰 차이..

API종류만 다른것이지 둘다 요청과 응답으로 이루어지는 HTTP통신.

Rest-API

  • 어떠한 요청을하면, DB에서해당 데이터를 몽땅꺼내 전달해줌.
  • 특정페이지에서 필요한 것만 보여주고 싶어도 일단 모든 데이터를 받아와야함.
  • 결과적으로 사용자가 많아지게되면 네트워크비용이 많이들게된다.

GRAPHQL- 사용자가 많은 서비스들에 유리

  • 요청시 필요한것만 받을 수 있다.

JSON

Java Script Object Notation: 자바스크립트 객체 표기법=> 자바스크립트 객체를 흉내냈다.

데이터를 요청하고 응답받을 때 우리는 객체 형태로 주고받는다.
그러나 이것은 엄밀히 말하면 객체처럼 생긴 텍스트이다.
이 타입이 바로 JSON타입이다.

왜 객체로 주고 받지못하냐??
-- HTTP통신은 텍스트나 html을 주고 받는다고 했었다.
즉, 객체는 안되고 텍스트이여야 한다는 것이다.
따라서 JSON은 객체처럼 되어있으나 양끝에는 따옴표가 붙어있어 텍스트 형태도 띄고있다.
객체처럼 표기 했다라고하여 JSON이라고 한다.

우리는 JSON타입으로 데이터를 주고받는다.


각 주고받는 데이터(요청과 응답)에는 헤더라는것이 붙는다.
정확히는 헤더body가 들어가게된다.
헤더 부분에는 응답이다 요청에대한 요약정보가 들어가게된다. (요청한곳, 보내는이, 내용형태)
body에는 내용이 들어간다.


어떤 기능 하나를 만들 시 최소한 네가지 이상(정확히 Read에서 하나가 더 추가되어 5가지이상)의 API가 필요하다.

  • Create
  • Read ( Detail + List )
  • Update
  • Delete

??

게시물 기능이 필요하다고 하자.
단지 게시물기능 하나만 만드는것이 아니라, 게시물 등록도 필요하고, 수정도 필요하고, 삭제도 필요하고, 조회도 필요하다. 따라서 API는 최소한 5개 기능이 필요한 것이다.

CRUD메서드

DB는 엑셀같은 프로그램이 있고, 이것은 표 형태로 되어있다.
뭔가를 생성하고, 수정하고, 삭제 한다는것은 이 엑셀을 변경한다. 따라서 mutation이라는 메서드를 사용한다.
그런데 조회해오는것은 뭔가를 변경해오지 않는다.
기존값을 그대로 꺼내 가져온다.
따라서 query라는 메서드를 사용한다.


yarn init으로 package.json을 만든다음 설치 가능...


Rest를 알아야하는 이유

Open-API를 사용할 경우 누구든 사용할 수 있게끔 rest형태로 제공된다.

취업한 회사에서 rest-API를 사용할수도 있다.


다시 정리

rest-API부분 요청한 주소(이름)를 살펴보면 전부 같고, 메서드만 다른 것을 볼 수 있다.
이렇게 이름은 같게하고, 메서드만 다르게하여 만드는 방식을 Restful하다 라고 한다.

이름은 벡엔드에서 만드는 것인데 /board/update/1 또는 /board/write/1 등으로 작성도 가능하다. 이러한 방식은 규칙이 없다.

그러나 최대한 통일성을 살려 Restful하게 작성하고 구분은 메서드로한다면 좀 더 깔끔해보인다.

이렇게 만드는 것이 restAPI중에서도 restful한것이다.


추가++

~~ Returtn이라고 적혀있는것은 벡엔드에서 만든 타입으로 객체 형태.
대괄호로 되어있는것은 객체가 여러개 들어있는 배열을 의미.
! 가 붙은 것은 필수 값

0개의 댓글