You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Strapi REST API获取内容类型结构详情及类型列表?

如何通过Strapi REST API获取内容类型列表

当然可以,Strapi确实提供了不用预先知道内容类型名称就能获取列表的方法,主要有两种常用途径:

1. 调用内置元数据端点

Strapi自带一个能返回所有内容类型元数据的端点,但这个接口默认只对管理员开放,需要携带有效的管理员JWT令牌才能访问。

  • 请求方式:GET
  • 请求地址:/content-type-builder/content-types
  • 请求头需添加:Authorization: Bearer <你的管理员令牌>

返回的结果会包含每个内容类型的详细信息,比如你提到的articles、reviews这类API标识符,还有显示名称、字段结构等内容。

2. 自定义公开API端点

如果需要让非管理员角色也能获取内容类型列表,可以自己在Strapi里搭建一个自定义接口:

  1. 在src/api/content-type-info/controllers/目录下创建content-type-info.js文件,代码示例:
module.exports = {
  async list(ctx) {
    // 获取所有已注册的内容类型
    const allContentTypes = strapi.contentTypes;
    // 过滤掉系统内置的内容类型,只保留你自定义的部分
    const customTypes = Object.values(allContentTypes).filter(type => 
      !type.uid.startsWith('admin::') && !type.uid.startsWith('plugin::')
    );
    // 提取关键信息返回,比如API名称和显示名称
    const simplifiedList = customTypes.map(type => ({
      apiId: type.apiId,
      displayName: type.info.displayName
    }));
    ctx.send(simplifiedList);
  }
};
  1. 在src/api/content-type-info/routes/目录下创建content-type-info.js配置路由:
module.exports = {
  routes: [
    {
      method: 'GET',
      path: '/content-type-info/list',
      handler: 'content-type-info.list',
      config: {
        policies: [], // 这里可以设置权限策略,比如允许公开访问或指定角色访问
      }
    }
  ]
};
  1. 重启Strapi后,就能通过/api/content-type-info/list这个端点获取自定义内容类型的列表了,无需管理员令牌(如果配置了公开权限的话)。

注意事项

  • 内置的/content-type-builder/content-types端点返回的是完整的内容类型配置,属于敏感信息,所以默认只对管理员开放。
  • 自定义端点时,记得过滤掉系统内置的内容类型,避免暴露不必要的信息。

内容的提问来源于stack exchange,提问作者Vlad Nicula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:35:16