官方文档地址是:https://docs-next.strapi.io
由于没有中文版,我自己安装的时候顺带整理了一份
首先确保nodejs是18或者20版本,目前只支持这两个版本
如果nodejs版本有问题的,可以查看:
安装
在需要安装的目录下运行安装脚本:
npx create-strapi@rc my-project --quickstart
安装好以后默认URL是 http://localhost:1337/admin
设置数据库
打开根目录./config/database.js
import path from 'path';
export default ({ env }) => {
const client = env('DATABASE_CLIENT', 'sqlite');
const connections = { ...
sqlite
for SQLite databasespostgres
for PostgreSQL databasesmysql
for MySQL databases
sqlite是默认值,需要根据实际情况替换
数据库具体信息则是在根目录下的.env文件中设置,我们以postgres为例:
# Database
DATABASE_CLIENT=postgres
DATABASE_HOST=127.0.0.1
DATABASE_PORT=5432
DATABASE_NAME=strapi
DATABASE_USERNAME=strapi
DATABASE_PASSWORD=strapi
DATABASE_SSL=false
使用了postgres时,需要安装pg:
npm install pg --save
注册
进入默认地址,注册一个本地管理员账户,比如:strapi@sunmaotool.com
设置一个密码,比如:Abcd1234
然后就直接进入到管理面板了
改成中文
为了方便使用,我们先把界面的中文设置了,打开 src/admin/app.example.js
,重命名为app.js
,在其中取消掉 'zh-Hans'
的注释
然后点击左下角的用户名 -> Profile,拉到最下面,选择中文(简体)
:
说真的,这中文翻译也就那样吧……我个人感觉还不如用英文。
使用
创建API
建表
首先打开 Content-Type Builder
,这里有三种类型可以选择:
COLLECTION TYPES
:管理多个条目的内容类型SINGLE TYPES
:管理一个条目的内容类型COMPONENTS
:一种可用于COLLECTION TYPES
和SINGLE TYPES
的数据结构
简单的来说,COLLECTION TYPES
就是我们常说的数据库里的“表”,可以有多条数据。SINGLE TYPES
只能管理一条数据,可用于全局配置。COMPONENTS
表示一种数据结构,它可以在其他类型中复用。比如你可以创建一个名为 SEO 的组件,负责管理标题、描述等字段。然后你可以在 Article 和 Product 这两个 COLLECTION TYPES 中复用这个组件,而不用重新一一建立。
这里我们选择 COLLECTION TYPES
,建立一个名为 Note 的集合类型,它对应的单数 ID 为 note,复数 ID 为 notes,这些是自动生成的,用于生成我们的接口地址。此步骤相当于建表。
为表添加字段
填充数据
回到 Content Manager
,选择 Note
这个集合类型,然后点击 Create new entry
,这步就是让你填充一些数据。我们象征性的填充一些数据:
生成 token
打开 Settings
-> API Tokens
,点击 Create new API Token
,生成 API Token,该 Token 决定了权限范围和使用时间。
生成一个令牌,需要保存,像这样:
3aaf74ee89cb6f7ee43a88c293c8f4c3f27216c41815d8654a315057d56265439745a93a29fc0d5b7dee9b57ba88bffa48663bcbdbdf8902e9a04c218acd7aa6db9ade05554f911a78f613dc9303865f08a403d2c7bf8102bd6df597401304d77f2ac638874c7f45da0daeafbedafbd8614671f9251ac08232b2851d37b7b471
自动生成的接口
现在接口就已经生成了,对于一个 COLLECTION TYPE,Strapi 对应会生成这些接口,我们以这里的 Note COLLECTION TYPE 为例:
注意这里用到的都是复数 ID。如果是 SINGLE TYPES,生成的接口会用到单数 ID:
调用接口
然后就可以直接调用接口了,我这里用的apifox。调用接口的时候要注意传递token
调整接口权限
如果不想使用token访问接口,可以调整:用户及权限插件-角色-public
比如配置为列表和单个查询不需要权限校验