CMS
strapi Collection 생성과 사용
by NOMADFISH
2020. 12. 3.
Collection
기본적으로 collection은 DB의 table이다.
실제로 strapi가 생성하는 collection은 실제 DB에서도 table로 생성된다.
collection type 추가
PLUGINS/Content-Types Builder를 누른후 나타나는 오른쪽 화면에서 + Create new collection type 을 클릭한다.
collection type name
collection type의 이름을 설정한다. 이 이름은 table name이라고 생각할 수 있다. 다만 Display name은 현재 strapi에서 보여지는 이름이며 고급 설정에 실제로 DB table이름으로 사용될 collection name도 따로 설정은 할 수 있다.
Todo List를 만든다는 가정하에, task라는 이름으로 하나의 Collection을 생성한다.
그다음 field를 추가해 줘야 한다.
collection type fields
상단의 저장 버튼을 눌러 저장 한다.
이제 Task라는 Collection Type이 생성 된다.
이제 COLLECTION TYPES에 Task 항목이 생긴 것을 볼 수 있다.
COLLECTION TYPES에서 이제 값들을 추가/수정/삭제 할 수 있다.
이제 값을 직접 추가해 보도록 하겠다.
화면 오른쪽에 "+ task 항목 추가" 라는 버튼을 누르면, 내가 추가한 field들을 추가 할 수 있는 화면으로 이동한다.
Name에 '홍길도', Desc에는 '활빈당 두목' 으로 데이터를 추가 한다. 저장 버튼을 눌러 실제로 collection data로 추가 한다.
ID, Created_at은 기본적으로 생성되는 항목이니 크게 신경쓰지 않아도 된다.
이제 생성된 데이터를 Rest API를 사용하여 획득하도록 해보자.
일단 먼저, Task Collection 에 외부에서 로그인 없이 접근 할 수 있는 권한을 주도록 하자.
PLUGINS/역할 & 권한 메뉴에 Public역할을 수정하자, 오른쪽에 연필 모양을 눌러 수정할 수 있다.
Public을 잠깐 설명하자면, 기본적으로 생긴 역할/권한이며, 아마나 접근할수 있는 권한을 의미한다. 즉 Public에서 허가해준 사항은 strapi에 user로 추가되있지 않는 어떤 client라도 접근이 가능해 진다.
Public 설정 화면에 들어 가면 위와 같이 원래 업던 Task라는 항목이 생성되어 있음을 확인 할 수 있따. 새부적인 권한을 설정 할 수 있다.
이름만으로 각각이 무었을 의미 하는지 알 수 있을 것이다.
여기서 find 권한만 check하여 주도록하자, findone 이라는 항목은 task의 전체 리스트는 가져 올 수 없고, ID로 하나의 항목만 딱 지목해서 확인 가능한 권한이다.
이제 저장 버튼을 누르면 권한 설정이 적용된다.
이제 Browser 주소창에 localhost:1337/tasks 을 입력해보자 아래와 같은 응답이 올 것이다.
보통 collection name +"s"붙이면 find 항목이고, find는 조건에 맞는 여러개의 collection데이터를 가져오는 API이다.
[
{
"id":1,
"name":"홍길동",
"desc":"활빈당 두목",
"created_by":{
"id":1,
"firstname":"jisu",
"lastname":"eo",
"username":null
},
"updated_by":{
"id":1,
"firstname":"jisu",
"lastname":"eo",
"username":null
},
"created_at":"2020-12-02T15:04:49.452Z",
"updated_at":"2020-12-02T15:04:49.483Z"
}
]
위에서 볼 수 있는 것과 같이 정상적으로 데이터가 서버로 부터 내려오는 것을 확인 할 수 있다.
created_by, updated_by, created_at, updated_at 등은 strapi의 어떤 collection type을 api로 불러 와도 존재하는 항목들이다.( 나중에 이것들을 어떻게 빼거나 조작할 수 있는지 code level에서 설명하겟다)
공유하기
URL 복사 카카오톡 공유 페이스북 공유 엑스 공유