TIL 01 - REST API, GraphQL

lazy corder·2022년 5월 23일
0

TIL 1

  1. REST API의 정의와 한계
  2. GraphQL의 정의

추가 공부용 검색 키워드

restful api design guidelines (구글링)
비동기 프로그래밍


REST API의 한계

  1. OverFetching 내가 불러오고 싶지 않은 데이터까지 불러와짐
    -> 네트워크 시간이나 비용 등이 많이 듦

  2. UnderFetching 한번의 요청에 내가 원하는 충분한 데이터가 불러지지 않음
    ex) 특정팀의 매니저와 해당 팀의 팀원들 정보가 필요시, 각각 요청해야함
    요청1 :특정팀 요청 1번
    요청2 :해당 팀 팀원(people)

GraphQL이란?

  1. 한번의 네트워크 호출로 처리 가능

GraphQL 강점

  1. 필요한 정보들만 선택하여 받아올 수 있음
  • Overfetching 문제해결
  • 데이터 전송량 감소
  1. 여러 계층의 정보들을 한 번에 받아올 수 있음
  • Underfetching 문제 해결
  • 요청 횟수 감소
    (REST API에서 불가능한 것은 아니나, REST API의 정해진 원칙을 지켜야하기 때문에 한계가 있음)
  1. 하나의 endpoint에서 모든 요청을 처리
  • 하나의 URI에서 POST로 모든 요청 가능
    (REST API에서는 URI를 각각 다르게 함 GET, POST 등등)

API란?

  1. 하드웨어 - Interface
    어떤 기계를 만들면, 사용자가 그 기능을 전부 사용할 수 있도록 만들어야함
    tv : 리모컨으로 음량조절, 채널 선택 등 / 그 외 에어컨, 자판기, 키보드 마우스, 모니터
    -> 이런 걸 interface 라고 함 기계와 사람 간의 소통 창구

  2. 소프트웨어 - UI
    소프트웨어로 본다면 버튼, 스크롤바, 브라우저 창이 해당함
    UI (user interface) : 소프트웨어와 인간 사이의 소통창구

  3. API (Application Programming Interface)
    : 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단
    : 기계와 기계, 소프트웨어와 소프트웨어 사이에서도 수 많은 소통이 필요하며,
    소통할 수 있는 창구가 필요함
    ex 1) 기상청: 다양한 웹사이트들이 실시간으로 날씨정보 받아감
    ex 2) 카카오지도


REST API란?

: HTTP 요청을 보낼때 어떤 URI에 어떤 메소드를 사용할지 정한 약속

  • REST란 형식의 API !
  • 과거의 SOAP이란 복잡한 형식을 대체함
  • 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론 가능함
    → RESTful하게 만든 API는 요청을 보내는 주소만으로도 대략 이게 어떤 요청인지 알 수 있음
    ex) http://(도메인)/classes/2/students?page=2
  • 소프트웨어간 정보를 주고받는 형식
    so, 형식이기 때문에 기술에 구애받지 않음(무슨 프레임워크를 쓰든 상관없음)
  • GraphQL 이전부터 사용해왔으며, 특성이 다르므로 작업특성에 따라 적합한 것을 사용하면 됨
    → REST API 보완하기 위해 GraphQL 만들어짐

URI란?

  • 자원을 구조와 함께 나타내는 형태의 구분자

CRUD란?

  • CRUD? URI와 같은 조회작업뿐만 아니라, 정보를 새로 넣거나 수정, 삭제 작업을 통틀어 말함
  • CREATE 생성

  • READ 조회

  • UPDATE 수정

  • DELETE 삭제

    • 서버에 REST API 요청 보낼때는 http 라는 통신규약에 맞춰서 신호 전송함
      http에도 여러가지 메소드가 있는데, REST API에서는 아래 4가지, 혹은 5가지를 사용함
    • GET , POST , DELETE, PUT, PATCH
    • 이중 post, put, patch (look like 소포 )는 body란 주머니가 있어서
    1. 정보를 get, delete보다 많이 담고
    2. 비교적 안전하게 감춰서 실어보낼 수 있음
    • GET , POST , DELETE, PUT, PATCH 이것들의 기능이 특정 용도에 제한되어 있지는 않음
      ex) POST 하나로도 데이터를 쓰고 읽고 수정하고 지울 수 있음
      BUT, 누구든 각 요청의 의도를 쉽게 파악할 수 있도록 RESTful하게 API를 작성하기 위해서는
      용도에 맞게 구분해서 API를 사용해야함

    PUT: 정보 전체를 갈아끼울 때 사용
    PATCH: 정보 중 일부를 특정 방식으로 변경할 때 사용

    여러 소프트웨어들이 정보를 주고받으면서 돌아가는 것도 많음
    배달어플 들어가서 특정조건으로 조회하면 -> 서버에서 특정조건에 맞는 데이터를 전달함

    데이터를 주고받을 주체들간 약속된 형식
    REST API도 그 형식들 중 많이 쓰는 하나의 형식임

    • URI 형식(어떤 정보를) + 요청 방식(어떻게 할 것인가)

REST API 실습 초기세팅

nodemon
해당 프로젝트에 코드가 바뀔 때마다 이 앱을 껐다 킬 필요없이 바로 노드js가 인식해서 코드 실행해줌



0개의 댓글