strapi 사용기 -1

·2022년 4월 26일
0

strapi

목록 보기
1/1
post-thumbnail

들어가며

개인 프로젝트로 쓸 백엔드를 위해서 strapi 를 다뤄보려고 했는데
이게 생각보다 자잘하게 안되는것들이 많았다.

뭐든 공식문서에 다 잘 나오기는 하는데 영어이다보니..

까먹기 전에 한번 정리를 해보려고 한다

사용법

설치

먼저 strapi를 설치해보자

npx create-strapi-app@latest {프로젝트 이름 아무거나} --quickstart

해당 명령어를 실행하면 프로젝트 이름으로 폴더가 생성되고
strapi 어드민으로 자동으로 리다이렉션 시켜준다

그럼 거기서 알아서 어드민 계정을 만든뒤

이후 과정을 진행 해보자

모델, contentType Builder

이제 api를 쓰기 위해서 먼저 어떤 데이터를 저장하고 쓸지 모델을 만들어야한다

먼저 좌측 메뉴의 content-type Builder에 들어간뒤
+Create new Conllection type 을 누르면

위와 같이 원하는 속성으로 모델을 만들 수 있다.
각 속성들이 어떤건지는 모델 설명 을 참고하자

여기서 나에게 중요한 건
relation 이 속성이다, 이건 db에서 일종의 외래 키 처럼 쓰이는건데
다른 모델이랑 연결을 할 수 있고, 자기 자신도 가리킬 수 있어서 트리 구조의 모델을 만들 수 있을거라고 추측한다

relation속성을 살펴보자

그림을 보면 relation은 총 6가지 관계를 가질수있다.

먼저 화살표가 있는것은 단방향
화살표가 없는것은 양방향이다

그리고 라인이 몇개가 있냐에 따라서
One-to-one
One-to-many
Many-to-many

이렇게 3가지로 나뉘게 된다.

Content Manager

이제 해당 모델에 값을 넣어보자

위 그림과 같이 Content Manager에들어 가고

Collection Types에서 아까 만든 모델명을 누르고 들어간다

Create new entry를 눌러서 원하는 데이터를 넣고 저장한다

꼭 publish를 눌러야 한다 이거 때문에 삽질을 했으니 잊지 말자 꼭 눌러야
api 를 호출할 때 해당 데이터를 볼 수 있다.

그리고 위 사진처럼 아까 생성한 relation 모델에 값을 할당할 수 있다
이제 api를 호출해 보자!

그전에 룰부터 설정하고

권한 설정

strapi는 api 토큰으로 해당 api에 접근권한을 부여할수있다
지금은 일단 귀찮으니깐 다 public으로 해보자

이제 api를 호출해보자

api 호출

먼저 전체 데이터를 불러오는 get 요청을 해보자
http://localhost:1337/api/notes 이렇게 해당 모델명 뒤에 s 를 붙이면 된다

그럼

{
  "data": [
    {
      "id": 1,
      "attributes": {
        "title": "하이",
        "createdAt": "2022-04-26T14:32:50.154Z",
        "updatedAt": "2022-04-26T14:39:35.928Z",
        "publishedAt": "2022-04-26T14:32:53.551Z"
      }
    },
    {
      "id": 2,
      "attributes": {
        "title": "2222",
        "createdAt": "2022-04-26T14:33:32.959Z",
        "updatedAt": "2022-04-26T14:33:33.503Z",
        "publishedAt": "2022-04-26T14:33:33.502Z"
      }
    },
    {
      "id": 3,
      "attributes": {
        "title": "3333",
        "createdAt": "2022-04-26T14:38:51.847Z",
        "updatedAt": "2022-04-26T14:38:52.370Z",
        "publishedAt": "2022-04-26T14:38:52.368Z"
      }
    }
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "pageSize": 25,
      "pageCount": 1,
      "total": 3
    }
  }
}

이렇게 받아와진다

근데 이상한게 있다
아까 설정한 relation 모델 값이 없다

population

strapi 공식문서

자세한 건 해당 문서를 보면 되지만

버전 4부터 그냥 api를 호출하면 연관 모델의 값은 나오지 않는다고한다
(그럼 멘토님은 어떻게 하신 거지..?)

아무튼 그래서
http://localhost:1337/api/notes?populate=* 이런식으로 populate 값을
쿼리 값으로 넘기면 되는데 * 같은 경우에는 전체 다 가져오는 쿼리이고

특정 속성명만 적어 넘기면 해당 속성값만 채워서 가져 올 수 있다

0개의 댓글