如何使用 Strapi 构建 API
您是否需要在极短的时间内构建并交付 API?阅读本文,了解如何使用 Strapi 完成这项工作。
API 在任何应用程序中都非常有用且无处不在。作为一名开发人员,您可能会对在很短的时间内构建 API 感到困惑。在本文中,我将向您展示如何借助 Strapi 直观的界面快速(大概 10 分钟)构建 Node.js API。
您将学到什么
- 如何使用 Strapi 快速构建 API。
- 如何在不编写 Node 代码的情况下构建 Node 后端。
- 如何使用 Strapi 管理关系字段。
- 如何添加 GraphQL 端点来获取和改变您的 API。
本文针对
- 需要快速构建后端 API 的开发人员。
- 想要构建后端但只想关注前端的开发人员。
- 想要构建 Node 后端 API,但不具备 Node 专业知识的开发人员。
您将构建什么
在本文中,您将从零开始(即从一个空目录开始),然后逐步完成使用 Strapi 构建 API 所需的所有步骤。您将构建的 API 将允许客户端发出请求来操作内容。在本例中,内容代表博客文章(例如,对于博客网站而言 - 如果您想构建前端,请继续)。
先决条件
本教程需要准备:
-
了解 API;首先了解它可能很有意义。
-
Node 和 NPM - 您需要在本地计算机上安装 Node 和 NPM。要确认它们已安装,请在终端中运行以下命令:
node -v && npm --v
Node 包管理器已随 Node 安装。如果您尚未安装,可以按照Node.js官方网站上的说明进行操作。
本教程使用 Node v14.18.1 完成。
- Yarn - Yarn 是一个包管理器,它可以帮助我们以比 NPM 快几倍、更可靠的方式管理应用程序依赖项。你可以使用以下命令安装 Yarn:
npm install --global yarn
目录
以下是我们今天要讨论的内容:
👋 Strapi 简介
⚙️ 设置 Strapi 项目
🏗️ 构建 Strapi 后端
🤝 理解和使用 Strapi 中的关系
⚡ 使用 GraphQL 和 Strapi 更快地交付
🤔 结论
Strapi 简介
Strapi 是一个基于 Node.js 的开源无头 CMS(内容管理系统),它使开发人员能够轻松构建自托管、可定制且高性能的内容 API(RESTful 和 GraphQL)。使用 Strapi,可以节省数周的 API 开发时间,因为它无需任何代码,构建一个强大的 API 只需不到 20 分钟。
是不是很棒?我也是这么想的。让我们深入探讨如何实现这一点。
设置 Strapi 项目
安装新的 Strapi 项目有多种方法。然而,Strapi CLI 是最好的入门方式。
首先,打开终端并导航到您想要创建此项目的目录。在终端中运行以下命令来搭建一个新的 Strapi 项目:
yarn create strapi-app my-project --quickstart
使用
--quickstart
命令末尾的标志会默认使用SQLite数据库,并直接在快速启动模式下创建项目。如果您想切换数据库,请阅读更多内容。
项目创建完成后,应用程序应自动在浏览器的localhost:1337启动。
如果您的应用没有自动启动,请在项目文件夹中运行以下命令:
yarn develop
使用 IDE 打开应用程序文件夹,项目结构应如下所示:
构建 Strapi 后端
现在项目文件夹已经创建,构建 Strapi 后端的第一步是注册管理员。
您可以通过填写启动时提供的表格来注册管理员,如下所示:
然后,点击“开始”按钮。这将创建你的帐户并带你进入 Strapi 管理界面,你将使用它进行开发配置。
yarn create
您很快就可以从仪表板创建自己的 API,这难道不令人惊奇吗?
至此,您已准备好利用 Strapi 的强大功能构建博客文章 API。让我们继续。
设计数据结构
现在,我们将开始为 API 创建数据结构。我们可以通过创建内容类型来实现。我们将构建的第一个内容类型是帖子。
前往Content-Types Builder
部分并点击Create new collection type
。将出现一个模式,您可以在其中输入post
显示名称。
内容类型构建器允许创建和更新内容类型:单一类型和集合类型。阅读更多。
post
然后,将出现一个模式,您将使用它来创建内容类型的字段。
嗯,博客文章总是包含哪些字段...让我们创建以下字段:
title
类型为Text(必填)content
富文本类型(必填)image
类型为媒体(单张图片)且(必填)author
类型为Text(必填)
现在,您有一个post
包含 4 个字段的内容类型 - 文本、富文本、媒体和文本。
点击“完成”,然后点击“保存”!现在,您的第一个内容类型已创建,并且您已成功为博客文章创建了架构。
模式有助于实现数据库的设计。数据库模式是帮助开发人员直观地了解数据库构建方式的蓝图。它们提供了一个参考点,指明项目包含哪些字段的信息。
现在,在侧边栏上,我们将看到“COLLECTION TYPES”部分,如果您转到帖子部分,您会发现当前没有帖子。
您可以通过单击“添加新帖子”来创建全新的帖子。
您将看到系统提供了一个用于输入数据的 CMS。请继续填写各个字段(标题、特色图片、作者、内容),其中包含您想要添加到数据库的第一篇文章的信息。如果您愿意,可以添加多篇文章。
然后点击保存和发布。我的截图如下:
要查看posts
API,请访问localhost:1337/posts。Ps:请注意,它使我们最初设置的集合类型的名称变为复数形式 - post。
您将收到状态 403 - 禁止错误,如下所示:
这是因为我们尝试以未经身份验证的用户身份查看 API,而默认情况下,查看 API 需要身份验证。要公开帖子,我们必须授予帖子内容类型的读取权限。为此,请前往仪表板,然后在“常规”部分下进行操作。
- 单击“设置”,然后单击“角色和权限”,再单击
public
“角色”。 - 检查权限下的文章
find
和findone
选项并保存。
通过这些,您允许公共用户获取所有帖子**GET**
/posts
,也可以获取单个帖子**GET**
/posts/:id
;这与 REST API GET 方法非常相似。
然后点击保存!
现在,如果我们转到localhost:1337/posts,您现在应该可以看到来自帖子端点的所有帖子。
您可以使用 REST API 方法访问创建的端点,因为默认情况下,Strapi 通过 REST 提供我们的端点,但在本文后面,我将向您展示如何通过 GraphQL 访问端点
在项目文件夹中,这些
./api/**/config/routes.json
文件定义了客户端所有可用的端点。默认情况下,Strapi 会为所有内容类型生成端点。阅读更多。
看起来我们正在取得进展。不是吗?
现在我们已经创建了一个帖子,其内容存储在您的数据库中,以便您在需要时可以访问您的数据。
如果你仔细查看posts
终端,就会发现 Strapi 的另一个好处是它还支持图像优化。你可以渲染不同的图像格式,包括缩略图、大图、中图和小图。
使用 Strapi,你无需费力构建 MVC 项目结构——创建数据库、数据库连接、模型等等。所有这一切都在 Strapi 的后台为你完成。我们很快就会讲解。
看到我们不断取得进展,难道不是一件美好的事情吗?
回到您的 IDE,您将看到项目文件夹中已创建一个文件夹,这是您在管理面板上创建的端点./api/posts/
的反映。posts
在模型文件夹中,该posts.settings.json
文件定义了post
您创建的模式,如下所示:
随着您的应用程序的增长——您添加的内容类型(端点)越多,api 目录中创建的文件夹就越多。
另请注意,上传的图像存储在public/uploads
文件夹中。
我觉得你所有的代码都对应着仪表盘上的所有操作,这很有道理。你觉得呢?
理解和使用 Strapi 中的关系
假设你有一个视频集合,并且每篇博文都应该嵌入一个视频。为了在视频集合中的视频和其关联的博文之间建立关联,你首先需要学习如何在 Strapi 中使用关系。
通过内容类型构建器添加到内容类型的关系类型字段,可以与另一个内容类型(必须为集合类型)建立关系。这些字段称为“关系字段”。
利用我们新获得的知识,让我们继续创建视频集 - 以演示如何在 Strapi 中建立关系。
前往Content-Types Builder
部分并点击Create new collection type
。输入video
作为显示名称。
然后为视频内容类型添加以下字段:
url
类型为Text(必填)
点击“完成”,然后点击“保存”!现在,您的第二个内容类型已创建,并且您已成功为视频创建了架构。
要继续,请获取视频 URL,也许是您最喜欢的 YouTube 视频的 URL。
因为我们想在帖子集合和视频集合之间创建链接,所以我们还需要video
在Posts
集合中添加一个名为 的新字段。该字段的类型为Relationposts
,我们可以选择两者之间的关系类型videos
(通过选择 6 个选项中的任意一个)。为了在本演示中保持简单,我们将选择帖子与视频的一对一关系,如下所示:
注意:对于要成为关系的字段,它必须是集合类型。
完成后点击“完成”按钮。
现在你的帖子架构应该如下所示:
有了这些,收藏中的视频字段Posts
就与收藏有关系了Videos
。
要继续,请导航至信息中心中“收藏类型”下的视频部分,然后单击添加新视频按钮将视频添加到您的Videos
收藏中,如下所示:
点击“保存”,然后点击“发布”。
添加视频后,我们现在可以将其与博客文章链接起来,方法是前往帖子集合中选择的帖子,单击编辑按钮,然后选择要添加到该帖子的视频 URL。
好了!如果你在浏览器上访问localhost:1337/posts,你会看到posts
端点已经更新,并且视频已经添加到你包含它的帖子中,如下所示:
使用 GraphQL 和 Strapi 实现更快交付
更快地交付应用程序始终是重中之重。在本节中,您将学习如何通过生成的 GraphQL 模式轻松查询数据。
要在您的应用中开始使用 GraphQL,您首先必须通过在项目目录中运行以下命令来安装插件:
yarn strapi install graphql
安装 GraphQL 插件后,您将能够添加 GraphQL 端点来获取和改变您的内容。
使用以下命令重新启动应用程序:
yarn develop
当你在浏览器中访问localhost:1337/graphql时,你应该看到界面(GraphQL Playground),它将帮助你编写 GraphQL 查询来探索你的数据
如果您想访问博客文章的 ID、标题、特色图片的 URL、作者和视频的 URL,您可以按照如下所示编写查询:
我们能够快速便捷地获取数据!此外,您还可以通过侧边栏查看您的架构。太棒了!
结论
在本文中,您了解了 Strapi 在构建 API 方面是多么快速、易用且功能强大。后端设置非常流畅。只需创建您的集合,Strapi 就会默认生成 RESTful 端点;或者,如果您更喜欢使用 GraphQL 端点,只需安装插件即可。所有这些,都遵循了最佳的 Web 实践。真是太棒了!
如果您有任何问题或建议,请随时发表评论、发送电子邮件或直接发邮件给我。