TIL 1
- REST API의 정의와 한계
- GraphQL의 정의
추가 공부용 검색 키워드
restful api design guidelines (구글링)
비동기 프로그래밍
REST API의 한계
- OverFetching 내가 불러오고 싶지 않은 데이터까지 불러와짐
-> 네트워크 시간이나 비용 등이 많이 듦
- UnderFetching 한번의 요청에 내가 원하는 충분한 데이터가 불러지지 않음
ex) 특정팀의 매니저와 해당 팀의 팀원들 정보가 필요시, 각각 요청해야함
요청1 :특정팀 요청 1번
요청2 :해당 팀 팀원(people)
GraphQL이란?
- 한번의 네트워크 호출로 처리 가능
GraphQL 강점
- 필요한 정보들만 선택하여 받아올 수 있음
- Overfetching 문제해결
- 데이터 전송량 감소
- 여러 계층의 정보들을 한 번에 받아올 수 있음
- Underfetching 문제 해결
- 요청 횟수 감소
(REST API에서 불가능한 것은 아니나, REST API의 정해진 원칙을 지켜야하기 때문에 한계가 있음)
- 하나의 endpoint에서 모든 요청을 처리
- 하나의 URI에서 POST로 모든 요청 가능
(REST API에서는 URI를 각각 다르게 함 GET, POST 등등)
API란?
- 하드웨어 - Interface
어떤 기계를 만들면, 사용자가 그 기능을 전부 사용할 수 있도록 만들어야함
tv : 리모컨으로 음량조절, 채널 선택 등 / 그 외 에어컨, 자판기, 키보드 마우스, 모니터
-> 이런 걸 interface 라고 함 기계와 사람 간의 소통 창구
- 소프트웨어 - UI
소프트웨어로 본다면 버튼, 스크롤바, 브라우저 창이 해당함
UI (user interface) : 소프트웨어와 인간 사이의 소통창구
- 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
![](https://velog.velcdn.com/images/ny_plus_ny/post/c777a94e-0c82-41f3-ada6-2b59e7d84d4e/image.png)
- 이중 post, put, patch (look like 소포 )는 body란 주머니가 있어서
- 정보를 get, delete보다 많이 담고
- 비교적 안전하게 감춰서 실어보낼 수 있음
- GET , POST , DELETE, PUT, PATCH 이것들의 기능이 특정 용도에 제한되어 있지는 않음
ex) POST 하나로도 데이터를 쓰고 읽고 수정하고 지울 수 있음
BUT, 누구든 각 요청의 의도를 쉽게 파악할 수 있도록 RESTful하게 API를 작성하기 위해서는
용도에 맞게 구분해서 API를 사용해야함
PUT: 정보 전체를 갈아끼울 때 사용
PATCH: 정보 중 일부를 특정 방식으로 변경할 때 사용
여러 소프트웨어들이 정보를 주고받으면서 돌아가는 것도 많음
배달어플 들어가서 특정조건으로 조회하면 -> 서버에서 특정조건에 맞는 데이터를 전달함
데이터를 주고받을 주체들간 약속된 형식
REST API도 그 형식들 중 많이 쓰는 하나의 형식임
- URI 형식(어떤 정보를) + 요청 방식(어떻게 할 것인가)
REST API 실습 초기세팅
nodemon
해당 프로젝트에 코드가 바뀔 때마다 이 앱을 껐다 킬 필요없이 바로 노드js가 인식해서 코드 실행해줌