Day 43
strapi 소개 및 설치
strapi는 headless CMS로서 별도의 많은 코딩 없이 컨텐츠를 관리할 수 있게 해주는 시스템이다.
- strapi 설치하기
- strapi 회원가입하기
- strapi user 정보 생성
- strapi API 이용해보기
strapi 컬렉션 추가
- 컬렉션 추가(post)
- 추가된 컬렉션 API를 이용해서 불러오기
- 권한 설정
strapi 인증, 인가, 권한
- API를 이용하여 JWT 발급받기
- 발급받은 JWT를 가지고 API를 이용하여 로그인해보기
- strapi에서 권한 설정으로 허가되지 않은 접근 막기
나도 한다 백엔드! - CRUD
- API를 이용하여 Create, Read, Update, Delete를 실습한다.
GraphQL
GraphQL이란?
- 데이터를 불러오는 규칙이다. HTTP 프로토콜을 사용한다.
- 데이터를 가져오는 방법이 REST API와 다르다.
- REST API의 한계를 극복하기 위해 등장하였다.
- 백엔드 개발자가 귀찮아지는 작업들이 꽤 있다.
- GraphQL을 이용하는 서버가 잘 되어있으면 클라이언트 개발자는 매우 편하다.
Over-Fetching
- 특정 데이터를 받기위해 필요없는 데이터까지 불러올 수 있다.
Under-Fetching
- 필요한 데이터들을 받기위해 여러 API를 호출해야 한다.
GraphQL 사용법
- GraphQL은 필요한 것만 받아올 수 있다.
필요한 것만 가져오기
REST API |
GraphQL |
 |
 |
여러 API를 한 번에 가져오기
REST API |
GraphQL |
 |
 |
GraphQL에서 지켜야할 규칙
POST /graphql
로 요청한다.
- 백엔드에서 타입을 정의해야 한다.

- 요청은 Query, 변경은 Mutation을 사용해야 한다.

GraphQL의 단점
- learning curve가 REST API에 비해 높다.
- HTTP 캐싱이 어렵다.
- 필요한 필드를 모두 작성해야 한다.
- 파일 업로드에 대한 명쾌한 방법이 없다. → REST API를 이용한다.
GraphQL 공식 문서
graphql
추가 팁
- GraphQL은 객체에 대한 특정 필드를 요청하는 것이 무척 간단하다.
- 쿼리와 결과가 정확히 동일한 형태이다.
- 기존 REST 구조처럼 여러번 요청을 수행하는 대신 한 번의 요청으로 많은 데이터를 가져올 수 있다.
- 필드에 인자를 전달하는 기능을 추가하면, 훨씬 다양한 일을 할 수 있다.
- 별칭을 사용하여 필드의 결과를 원하는 이름으로 바꿀 수 있다.
- query에 이름을 붙일 수 있다. → 서버에서 디버깅이나 로깅할 때 굉장히 편하다.
@include
나 @skip
같은 지시어를 사용하여 특정 조건을 만족할 때만 값을 불러올 수 있다.