如何通过Strapi REST API获取内容类型结构详情及类型列表?
如何通过Strapi REST API获取内容类型列表
当然可以,Strapi确实提供了不用预先知道内容类型名称就能获取列表的方法,主要有两种常用途径:
1. 调用内置元数据端点
Strapi自带一个能返回所有内容类型元数据的端点,但这个接口默认只对管理员开放,需要携带有效的管理员JWT令牌才能访问。
- 请求方式:
GET - 请求地址:
/content-type-builder/content-types - 请求头需添加:
Authorization: Bearer <你的管理员令牌>
返回的结果会包含每个内容类型的详细信息,比如你提到的articles、reviews这类API标识符,还有显示名称、字段结构等内容。
2. 自定义公开API端点
如果需要让非管理员角色也能获取内容类型列表,可以自己在Strapi里搭建一个自定义接口:
- 在
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); } };
- 在
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: [], // 这里可以设置权限策略,比如允许公开访问或指定角色访问 } } ] };
- 重启Strapi后,就能通过
/api/content-type-info/list这个端点获取自定义内容类型的列表了,无需管理员令牌(如果配置了公开权限的话)。
注意事项
- 内置的
/content-type-builder/content-types端点返回的是完整的内容类型配置,属于敏感信息,所以默认只对管理员开放。 - 自定义端点时,记得过滤掉系统内置的内容类型,避免暴露不必要的信息。
内容的提问来源于stack exchange,提问作者Vlad Nicula
相关产品推荐
相关产品推荐

