Strapi入门

介绍

Strapi 是一个免费的开源无界面 CMS。所谓无界面——即 Headless ——是指这种 CMS 只提供结构化的数据和接口,而不提供界面,快速构建自己所需的API。在拿到数据后你需要用任何框架或方法将数据渲染成界面。

优点:

  • 保持对数据的控制。使用Strapi,可以知道数据的存储位置,并且始终可以完全控制。
  • 自托管。可以按照自己的方式托管和扩展Strapi项目。可以选择所需的任何托管平台:AWS,Netlify,Heroku,VPS或专用服务器。您可以随增长而扩展,100%独立。
  • 可以选择自己喜欢的数据库。Strapi适用于SQL和NoSQL数据库:MongoDB,PostgreSQL,MySQL,MariaDB和SQLite。
  • 可定制的。通过完全自定义API,路由或插件来完全满足需求,从而快速构建逻辑。

安装环境

Strapi入门

安装&运行

yarn create strapi-app my-strapi --quickstart

Strapi默认使用一个SQLite数据库。要使用其他数据库来设置Strapi,例如MongoDB或PostgreSQL,请从上述命令中删除--quickstart 标志。

启动开发模式

yarn dev

生产模式

yarn start

重新构建

yarn build

可以打开config/server.js文件,修改启动端口号

修改 strapi 管理界面为中文

step1. 在项目的./src/admin/目录下拷贝app.example.js文件并重命名为app.js,并对这两行

'zh-Hans',
'zh',

取消注释,保存。

step2. 运行yarn build && yarn start

step3. 在管理界面中点击:左下角的用户名 -> Profile -> Experience -> Interface language里可进行当前账号的界面语言设置,保存即可。

Strapi入门

快速开发一套CRUD接口

建表

点击Content-Type Builder,可以看到已经有一个User的集合类型,这个是strapi自己提供的,我们当前登录的用户的数据就存储在这个模型当中。

让我们建一个Pages集合,包含一个名称和描述字段。
Strapi入门

【注意】高级设置中的草稿&发布根据实际需要进行勾选,勾选之后新增加的数据需要手动进行发布才能生效。

点击继续后,
Strapi入门
Strapi入门
Strapi入门
Strapi入门
Strapi入门
Strapi入门
Strapi入门

新增数据

Strapi入门
保存数据并进行发布。

对外暴露接口

无需认证即可请求接口

找到设置->用户及权限插件->角色->Public,点击编辑按钮:
Strapi入门

Strapi入门

点击右上角保存按钮,即可通过localhost:1337/api/pages请求已发布的数据,或通过localhost:1337/api/pages/:id请求特定某条数据。get请求可直接在浏览器标签页中请求:

Strapi入门

需要认证才可请求接口

首先设置哪些接口需要认证才可请求。

找到设置->用户及权限插件->角色->Authenticated,点击编辑按钮,勾选全部接口,保存。
Strapi入门

方式一

创建令牌

找到设置->全局设置->API令牌->创建新的API令牌,我这里创建了一个无限期的完全访问的令牌(测试用,实际生产环境不推荐):
Strapi入门
保存后会生成一个令牌,复制令牌,接下来的请求会需要用到。我这里用TOKEN替代令牌内容。

接口请求

我是使用浏览器插件Talend API Tester来测试的,诸位看官也可以选择用postman等其他工具来测试。
Strapi入门
Strapi入门

请求头中增加Authorization,值为Bearer TOKEN,其中TOKEN可以是你创建API令牌后复制的令牌内容。

通常情况下我们的令牌都是通过接口请求的,见方式二。

方式二

令牌获取

方法一:POST请求http://host:port/api/auth/local
Strapi入门

Strapi入门

方法二:命令行方式

// Request
curl --request POST 'localhost:1337/api/auth/local' \
--form 'identifier="test@test.com"' \
--form 'password="test@123"'

// Response
{
    "jwt": TOKEN,
    "user": {
        "id": 3,
        "username": "test",
        "email": "test@test.com",
        ...
    }
}

返回数据中的jwt就是令牌,可用于请求体中的Authorization

【注意】请求数据中的用户名和密码是内容管理器User表中的用户。

因为:auth api only working for normal user, not for users in administrator group(Super admin, editor, author). Strapi have two entirely different user sets for the content API and admin APIs that cannot auth each other.

Strapi入门

接口请求

方式一中的接口请求。
或者:

// Request
curl --request POST 'localhost:1337/api/pages' \
--header 'Authorization: Bearer TOKEN' \
--form 'data={"name": "added from terminal", "description": "terminal"}'

// Response
{"data":{"id":6,"attributes":{"name":"added from terminal","description":"terminal","createdAt":"2024-04-12T12:30:38.530Z","updatedAt":"2024-04-12T12:30:38.530Z","publishedAt":"2024-04-12T12:30:38.528Z"}},"meta":{}}

总结

Strapi使开发者能够使用一个易于使用的界面建立一个强大的后端。

原文链接:https://juejin.cn/post/7356810039989895206 作者:多愁公子

(0)
上一篇 2024年4月13日 上午10:37
下一篇 2024年4月13日 上午10:48

相关推荐

发表回复

登录后才能评论