1. 일반적인 인식
2. 창시자의 Rest API
3. GrapQL과 Rest API의 차이
1. 일반적인 인식
-> Rest API: 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것
상세
1.url를 통해 자원을 지정.
2.http메서드: 자원에 대한 행위 표현
예시
사용자 라는 자원을 통해 CRUD 작업을 하고 싶다면
/user 로 사용자 자원을 지정하고
post, get, put , delete를 통해 사용자에 대한 생성, 조회, 삭제, 수정을 하는 것이 REST API라는 인식이다.
2.창시자의 Rest API
-> 창시자 Roy Fielding에 의하면 Rest API란 CRUD을 위한 것이 아니라, HTTP에 정의한대로 Rest 아키텍쳐 스타일에
부합하는 API 6개가 있다.
6개중에서 Uniform Interface API는 4가지 근본적인 제약 조건이 있다.
1. 자원을 식별할 수 있어야한다.
2. 표현을 통한 자원에 대한 조작
3. 자기 서술적 메시지
4. HATEOAS
1,2번의 제약 조건을 맞추려면
https: //naver.com/page?user=id/menu=login 이 아닌
HTTP Method : get
https://naver.com/user/login 일 것이다.
3번의 제약조건을 맞추려면
메세지 스스로가 자신을 설명할 수 있어야 한다. 즉,
API 문서가 REST API 응답 본문에 존재해야 한다는 것이다.
문서 전체를 넣는건 말도 안되니, API 문서의 위치는 알려줘야한다.
4번 Hypermedia 링크를 통해 애플리케이션의 상태 전이가 가능해야 한다.
*게시물 조회
*검색
등 이런 행동들이 상태 전이이고 이것을 Hypermedia를 통해서 넣는다.
하지만 이 모든 제약들은 창시자에 의하면, 매우 일반적인 상황에서 주어진 제약이니
실제로 구현시에는 유연성을 강조했다. 따라서 굳이 1~4 제약을 억지로 맞출 필요성은 없어보인다.
3. GrapQL과 Rest API의 차이
GraphQL은 API를 위한 쿼리 언어이며 타입 시스템을 사용하여 쿼리를 실행하는 서버사이드 런타임입니다.
클라이언트가 데이터를 서버로부터 가져오는 것을 목적으로 만들어졌습니다.
GraphQL이 REST와 비교해서 가지는 차이점은 크게 3가지 이다.
1. GraphQL은 보통 하나의 엔드포인트를 가진다. (+ graphql 이라는 엔드포인트를 가짐)
// 보통의 경우 도메인/user/~~/~~ 혹은 도메인/newpost/~~/~~ 지만 GraphQL은 도메인/graphql 이게 끝이다.
2. 1의 장점으로 GraphQL은 요청할 때 사용하는 쿼리에 따라 다른 응답을 받을 수 있다.
3. GraphQL은 원하는 데이터만 받을 수 있다.
//내가 12가지의 정보 데이터중 3가지만 필요하면 3가지만 요청 받을 수 있어서 HTTP 요청 횟수, 응답 사이즈를
줄 일 수 있다.
4. GraphQL은 만약 간단한 고정된 요청과 응답만 필요하면 query로 인해 Restful보다 응답 사이즈가 커질 수 있다.
5.캐싱이 REST보다 복잡하다.
6.REST API에 비해 정보가 없고, 파일 업로드 구현 방법이 정해져있지 않다.