strapi 是免费开源的 Nodejs 无头 CMS 内容管理框架,可以通过后台管理界面创建自定义 API,并且完全使用 JavaScript 实现。
什么是 strapi
strapi 是免费开源的 Nodejs 无头 CMS 内容管理框架,可以通过后台管理界面创建自定义 API,并且完全使用 JavaScript 实现。 打开strapi 官网[1],首页的交互式动画映入眼睑。
strapi 官网交互动画
我们可以清楚地看到,在后台配置字段,便可以生成 JSON schema,有了 JSON schema, strapi 便会自动生成 Restful API,是不是很强大呢?
后端工程
初始化项目
我们先使用 strapi 官网提供的脚手架初始化一个后端应用
npx create-strapi-app backend --quickstart
创建完成后,它会帮我们自动安装 npm 包,安装完成后会显示如下命令
bash
紧接着会自动进入 backend 帮我们执行
yarn develop
,并且自动打开登录页面strapi 后台登录页面
首先我们要注册一个 admin 账号,随便输入一个就行, 但要记住这个账号
First name: admin
Email: [email protected]
Password: Admin@123
登录后来的 strapi 的主界面

首页有关于 strapi 学习的主要入口,包括文档、代码示例、课程和博客。
纯英文的后台,一开始可能有些不习惯,我们可以使用 chrome 翻译插件直接翻译成中文
strapi 后台欢迎页面
建表
通过导航上的
Content-Type Builder
,也就是内容类型生成器
入口开始建立表。我们首先来想想,微博系统该建哪些表?

实体图
先来画一张实体图,梳理下各个实体直接的关系
- 一个用户可以发送多条信息:一对多
- 一个话题下也可以有多条信息:一对多
- 一条信息可以上传多张图片:一对多
那么我们可以以此来写出 TS 类型接口
bash
我们可以看到,后台中已经有 User 集合了,所以可以不必建用户表了,点击
Create new collection type
来创建一个新的集合strapi 后台创建集合
输入 Display name 为
topic
主题表,右边的参数会自动填充,默认不用修改,点击 Continue 继续strapi 后台添加字段
在弹出页面中,我们可以看到所有的字段类型,包含文本、邮箱、富文本、密码、数字、下拉选择等,只需要点击选择相应字段就可以建表字段了。
当我们建立完成一张表后,引导页面便会提示我们通过 api 访问接口了。
strapi 后台提示 api 地址
建立表关联
建立完 Message 表后,需要与 User 建立关系
strapi 后台建立表关联
点击 User 表,选择 Relation 字段
strapi 建立表关联一对多
在右侧选择 Message 表,中间关系选择一对多,Message 表关系字段,输入 user。
因为是多对一,一条 message 只属于一个用户,所以输入 user 单数,而不是 users,若是多对多的情况,我们要输入 users, 字段命名上的规范,可以让我们从接口返回数据看出对应的关系。
重复上述步骤我们可以建完所有表了,其中 images 表和用户表是我们不要建立的,因为用户和附件上传是通用功能,strapi 系统帮我们内置了,这真的是极大地加快了开发效率。
接口查询与获取
我们可以通过官方的文档[2]地址找到对应的注册和登录接口。
使用接口管理工具访问下 api,比如我们注册一个用户,如下图


apifox 调用注册
访问后,便注册了一个用户, 但是,直接访问
http://localhost:1337/api/messages
时,可能会看到如下界面,状态码 403, 这是为什么呢?strapi 403
因为我们还未对 message 表进行权限设置,所以无法访问。
strapi 权限设置
进入
settings ——> Roles ——> Public
, 对每个接口的请求方法进行权限设置,在 Public 选择 message 表,选择
find
,点击保存,这样我们的 message 接口便可以在不授权的情况下访问了。其中,角色分为
Authenticated
和 Public
。Authenticated
是需要登录才能访问的接口
Public
是不需要登录也可以访问的接口
strapi 后台节点地址
还有很重要的一点,所有的接口地址都可以通过这个地方查看和修改。