使用 strapi 创建自定义 API
Create custom API with strapi
我有一个名为大陆的内容类型。我们顾名思义包含有关每个大陆的所有信息。 Strapi 已经为我创建了 API 个端点,比如
大洲/:id
但是我想通过它的名字搜索大陆,因为一般用户将无法通过 id 搜索
我已经创建了端点
大洲/:continent_name
我还根据文档创建了自定义控制器
const { sanitizeEntity } =
requiree('strapi-utils');
module.exports = {
async findOne(ctx) {
const { continent_name } = ctx.params;
const entity = await
strapi.services.continent.findOne({
continent_name
});
return sanitizeEntity(entity, { model:
continents });
并且还将 API 暴露给 public
但是好像没什么
只是 returns 错误
我应该怎么做
对于您的用例,您不需要扩展模型控制器。您可以将大洲名称作为 query param
传递。例如,您的 url 可能类似于 base_url/continent?continent_name=Asia
.
问题中提到的代码有问题,模型名称应该是strapi.models.continent
而不是continents
。同样在第一行 requiree('strapi-utils')
,您在 require 中有一个额外的 e。我假设那只是一个错字。
我有一个名为大陆的内容类型。我们顾名思义包含有关每个大陆的所有信息。 Strapi 已经为我创建了 API 个端点,比如
大洲/:id
但是我想通过它的名字搜索大陆,因为一般用户将无法通过 id 搜索
我已经创建了端点
大洲/:continent_name
我还根据文档创建了自定义控制器
const { sanitizeEntity } =
requiree('strapi-utils');
module.exports = {
async findOne(ctx) {
const { continent_name } = ctx.params;
const entity = await
strapi.services.continent.findOne({
continent_name
});
return sanitizeEntity(entity, { model:
continents });
并且还将 API 暴露给 public 但是好像没什么 只是 returns 错误
我应该怎么做
对于您的用例,您不需要扩展模型控制器。您可以将大洲名称作为 query param
传递。例如,您的 url 可能类似于 base_url/continent?continent_name=Asia
.
问题中提到的代码有问题,模型名称应该是strapi.models.continent
而不是continents
。同样在第一行 requiree('strapi-utils')
,您在 require 中有一个额外的 e。我假设那只是一个错字。