Strapi 之API详述

2023-11-10

API的使用

REST API允许通过API端点访问 content-types 。当一个内容类型被创建时,Strapi会自动创建API端点。在查询API端点时,可以使用API参数来细化结果。可以理解为,对于每一个 content-types ,系统默认生成以下API。

Method

URL

描述

GET

/api/:pluralApiId

获取一个实体的列表

POST

/api/:pluralApiId

创建一个实体

GET

/api/:pluralApiId/:documentId

获取一个指定ID的实体

PUT

/api/:pluralApiId/:documentId

更新实体

DELETE

/api/:pluralApiId/:documentId

删除实体

举例如下:

Method

URL

描述

GET

/api/restaurants

获取餐厅列表

POST

/api/restaurants

创建餐厅

GET

/api/restaurants/:id

获取特定餐厅

DELETE

/api/restaurants/:id

删除餐厅

PUT

/api/restaurants/:id

更新餐厅

请求的Requests:

请求将返回一个响应对象,该对象通常包括以下key。
data:响应数据本身,可以是。

  • 一个单一的实体,包含以下key。
    • id :number
    • attributes: 响应实体,包含实体内的所有key
    • meta(object):
    • error(object,可选):关于请求所抛出的任何错误的信息。

API参数详述

以下参数可用于API查询,包括过滤、排序、分页等等

  • sort :排序操作,举例如下:
const qs = require('qs');
const query = qs.stringify({
  sort: ['title', 'slug'],
}, {
  encodeValuesOnly: true, // prettify URL
});

await request(`/api/articles?${query}`);
  • filters: 过滤操作,注意使用的示例
const qs = require('qs');
const query = qs.stringify({
  filters: {
    username: {
      $eq: 'John',
    },
  },
}, {
  encodeValuesOnly: true, // prettify URL
});

await request(`/api/users?${query}`);
  • populate

在 Strapi 提供的 API 中,Population 是一种用于在返回结果中获取关联模型数据的方法。简单来说,Population 可以让你在查询一个模型时,同时返回与之关联的另一个模型的数据。

举个例子,假设你有两个模型,一个是 User,另一个是 Post,它们之间是一对多的关系,即一个用户可以拥有多个文章。如果你只查询 User 模型,你只会得到用户的基本信息,例如姓名、电子邮件地址等。但是,如果你使用 Population,在查询用户信息的同时,还可以获取与该用户相关的所有文章信息。

具体实现方式是通过在查询中使用 populate 关键字来指定要获取的关联模型名称,例如:

bashCopy code
GET /users?populate=posts

这将返回一个包含所有用户信息及其所有文章信息的 JSON 对象。

Population 在查询关联模型数据时非常有用,可以减少 API 调用次数,提高数据获取效率。它还可以简化前端代码,因为前端不需要执行多个 API 调用来获取相关数据。

  • Fields

在Strapi中,字段(Fields)是定义模型中的属性和其类型的基本单元。在Strapi中创建模型时,我们可以为模型添加多个字段,每个字段代表模型中的一个属性,例如标题、内容、作者等。

使用Strapi提供的API,我们可以访问模型的数据,并使用字段来指定要获取的特定属性。通过使用Fields,可以轻松地从模型中选择要检索的特定属性,以便可以在API响应中获得更细粒度的数据。例如,如果只想获取标题和作者属性,可以在API请求中使用Fields指定这些属性,而不是获取模型中的所有属性。

假设我们有一个名为“文章”的模型,其中包含标题、作者、内容和创建日期等属性。现在,我们想要使用Strapi API来检索文章数据,但只需要获取标题和创建日期属性。

在这种情况下,我们可以在API请求中使用Fields来指定要检索的属性,如下所示:

bashCopy code
http://localhost:1337/articles?_fields=title,created_at

通过使用_fields参数,我们可以将要获取的属性指定为逗号分隔列表。在上面的示例中,我们将title和created_at指定为要获取的属性,因此API响应将只包含这两个属性的数据。

另外,如果我们想要建立“文章”模型与“作者”模型之间的关系,我们可以使用关联字段类型。例如,我们可以在“文章”模型中添加一个名为“author”的字段,并将其类型设置为“关联”。然后,我们可以将“作者”模型与“文章”模型关联起来,并在API响应中返回相关的作者数据。

  • pagination: 查询属性

const qs = require('qs');
const query = qs.stringify({
  pagination: {
    page: 1,
    pageSize: 10,
  },
}, {
  encodeValuesOnly: true, // prettify URL
});

await request(`/api/articles?${query}`);

  • publicationState: 选择发布和草稿功能

在Strapi中,每个内容类型都有一个名为publicationState的字段。这个字段允许在发布(published)和草稿(draft)之间切换。默认情况下,publicationState字段的值为“published”,这意味着该内容已经发布并可以公开访问。

当需要对内容进行编辑或更新时,可以将publicationState字段的值更改为“draft”,以便进行修改并在准备好发布时再次将其更改为“published”。

此外,publicationState字段可以用于访问Strapi的API时对内容进行过滤。例如,可以通过查询具有特定发布状态的内容来获取已发布或草稿状态的内容。例如,可以使用以下查询获取所有已发布的文章:

GET /articles?publicationState=published

或者,可以使用以下查询获取所有草稿文章:

GET /articles?publicationState=draft

因此,publicationState字段可以帮助管理内容的发布和编辑,以及在使用Strapi的API时对内容进行过滤。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Strapi 之API详述 的相关文章

  • 树莓派开启 wifi 热点

    树莓派小巧的体型当然不是为了固定放在桌子上 更是为了做成可移动的智能设备 例如智能小车 当树莓派不在室内的 wifi 下时 怎样方便地连接上它呢 于是想要把树莓派变成 wifi 热点 就能用我们的手机或者笔记本连接它了 一 修改 etc n
  • 蓝牙Mesh中的Heartbeat和Heartbeat Publication

    Heartbeat 在蓝牙Mesh网络中 Heartbeat 心跳 是一种用于监测设备在线状态和网络连通性的机制 它是由每个设备定期发送的小型消息组成 用于指示设备的存在和活动状态 Heartbeat的主要目的是确保网络中的设备处于活动状态
  • js实现---加油站问题(贪心算法)

    加油站问题 贪心算法 基本要素 贪心选择 在对问题求解时 总是做出在当前看来是最好的选择 也就是说 不从整体最优上加以考虑 他所做出的是在某种意义上的局部最优解 最优子结构 当一个问题的最优解包含其子问题的最优解时 称此问题具有最优子结构性

随机推荐

  • 树形结构互转

    树形结构互转 1 线性转树形 lineToTree list const list list map e gt id e id pid e parentId label e name raw e const addChild arr obj
  • TPE原理总结

    hyperopt TPE 在hyperopt tpe py 935 处打一断点 5 超参的取值 3 loss的取值 GMM1 GMM1 lpdf len dict literal broadcast best getitem sub arr
  • 三星s9系统更新无法连接服务器,三星 S9/S9+ 手机开始推送 One UI 2.1 系统固件更新...

    IT之家6月15日消息 外媒SamMobile报道 三星Galaxy S9和Galaxy S9 现在正在获取其最新的重大更新OneUI 2 1 今天开始在韩国和德国版三星S9 S9 中推送 上一周 德国版Galaxy Note9手机开始推送
  • Linux拷贝U盘文件(命令行)

    Linux系统有的有界面 有的没有只要命令窗口 因此导入外部文件就变得困难 没有可视化的方便 这里通过挂载u盘进行文件拷贝 首先挂载u盘 这里以centos为例 1 进入命令行模式下 输入命令 sudo i 获取root权限 2 mkdir
  • sqli-labs-master第13、14关。

    前言 输入内容被放到双引号中 报错型注入 注释符不可用 第十三关 http 192 168 89 134 sqli labs master Less 13 先输入 admin 我们还是分析一下 我们接着用and来测试 admin and 1
  • windows下tensorflow CUDA_ERROR_ILLEGAL_ADDRESS解决办法

    最近在使用tensorflow的时候出现了以下所示的bug 2017 11 08 12 24 52 838039 E tensorflow stream executor cuda cuda driver cc 1080 failed to
  • Spring事务回滚报错:org.springframework.transaction.UnexpectedRollbackException

    具体异常信息 Transaction rolled back because it has been marked as rollback only 出现了不可预知的回滚异常 因为事务已经被标志位只能回滚 所以事务回滚了 java lang
  • 视图的优点与缺点

    视图的优点 一 视图着重于特定数据 视图可以让用户或者程序开发人员只看到他们所需要的数据 而不需要把表中的所有信息与字段暴露出来 这样增强了数据的安全性 二 简化数据的操作 易维护 我们可以将经常用到的多表联合查询出来的数据 或特定的结果集
  • python django 环境搭建

    一 版本选择 Django 1 5 x 支持 Python 2 6 5 Python 2 7 Python 3 2 和 3 3 Django 1 6 x 支持 Python 2 6 X 2 7 X 3 2 X 和 3 3 X Django
  • 学习了解jboss7

    1 什么是J2EE J2EE是Java 2enterprise edition 是Java的一种企业版 用于企业级的应用服务开发 J2SE是Java 2standard edition 是Java的标准版 用于标准的应用开发 J2ME是Ja
  • mysql-8.0.32 数据库的安装 (Linux)

    Linux 中 mysql 8 0 32 数据库的安装 缘 步骤 常见问题解决方案 问题一 mysql error while loading shared libraries libtinfo so 5 cannot open share
  • java spring jdbc配置

    整理了一下java spring框架的jdbc 首先说明一下这个jdbc是在myeclipse下配置的 适合初学者 第一步我们在myeclipse下建立一个web项目 然后右击 项目名称 鼠标移动到 myeclipse 下 然后再移动到右边
  • 自动化运维:Ansible脚本之playbook剧本

    目录 一 理论 1 playbooks 2 YAML 3 使用ansible批量安装apache服务 4 定义 引用变量 5 指定远程主机sudo切换用户 6 when条件判断 7 迭代 8 Templates 模块 9 tags 模块 1
  • Linux 通配符 与 正则表达式 的区别与详解

    阅读目录 1 扫盲 2 通配符详细介绍 3 实例 背景 在linux使用过程中 经常需要查找文件 对命令中的通配符 pattern 和正则表达式的区分不是很清楚 有必要好好研究一下 1 扫盲 1 1 通配符和正则表达式 当在使用命令行时 有
  • python另存为excel_python 将数据保存为excel的xls格式(实例讲解)

    python 将数据保存为excel的xls格式 实例讲解 python提供一个库 xlwt 可以将一些数据 写入excel表格中 十分的方便 贴使用事例如下 引入xlwt模块 提前pip下载好 import xlwt 使用workbook
  • MySQL数据库技术知识总结

    数据库基本概念 数据库 是以一定方式储存在一起 能予多个用户共享 具有尽可能小的冗余度 与应用程序彼此独立的数据集合 一个数据库由多个表空间 Tablespace 构成 数据库就是一个存储结构化数据的仓库 数据库管理系统 Database
  • 蓝桥杯2019年c++b组国赛题目及题解

    填空题目来源来自于 https blog csdn net l503301397 article details 90697079 大题来源于 ACwing https www acwing com problem search 2 csr
  • Altium designer 15 导入PCB各层都透明,修改各层透明度依然不好使

    Altium designer 15 0导入PCB后 整个图都变透明了 不能移动PCB上的器件 可以查看器件 修改各个层的透明度依然不好使 后来发现显示PCB维度框有问题 解决方法如下图 选择下拉列表里的任意参数就可以解决这个问题 这里选择
  • 用rfkill命令管理蓝牙和wifi

    rfkill是一个内核级别的管理工具 可以打开和关闭设备的蓝牙和wifi 列出所有可用设备rfkill list 输出如下 0 phy0 Wireless LAN Soft blocked no Hard blocked no2 hci0
  • Strapi 之API详述

    API的使用 REST API允许通过API端点访问 content types 当一个内容类型被创建时 Strapi会自动创建API端点 在查询API端点时 可以使用API参数来细化结果 可以理解为 对于每一个 content types