搜索功能的自定义 Strapi v4 端点上出现 404 未找到错误

问题描述 投票:0回答:1

Stack Overflow 社区您好,

在 Strapi 中,我有一个包含各种条目的表,在该表中,有一个名为 code 的字段,其中包含随机生成的数字。我的主要目标是使用此代码字段查找特定记录。我需要有关如何正确发出 RESTful API 请求以获取与特定代码关联的数据的指导。

例如,当我的 Flutter 应用程序中的用户进行预订时,他们会收到这个唯一的代码。稍后,他们应该能够通过 Strapi API 使用此代码来检索其预订详细信息。因此,当提供代码作为查询参数时,我需要端点以特定记录进行响应。

我在 Strapi v4 应用程序中遇到自定义搜索端点的持续问题。不幸的是,我没有 Node.js 背景,并且该端点旨在由 Flutter 应用程序使用。这是发生的事情:

问题描述:

当我向自定义端点 (https://example.com/api/reserves/search?code=12962) 提交 GET 请求时,我收到 404 Not Found 响应。控制台中没有显示任何错误,只有此日志条目:

[2024-02-04 16:30:10] [2024-02-04 16:30:10.232] http: GET /api/reserves/search?code=12962 (7 毫秒) 404 故障排除完成:

确保在 Strapi 配置中正确设置路由和控制器。 已验证代码是否存在于数据库中并且在查询中正确传递。 检查路由定义中是否存在任何可能的拼写错误或错误配置。

这是自定义控制器的代码:

const { createCoreController } = require('@strapi/strapi').factories;

module.exports = createCoreController('api::reserve.reserve', ({ strapi }) => ({
  async search(ctx) {
    try {
      const { code } = ctx.query;
      if (!code) {
        return ctx.badRequest('کد پیگیری مورد نیاز است.');
      }

      const entity = await strapi.entityService.findMany('api::reserve.reserve', {
        filters: { code },
      });

      if (!entity.length) {
        return ctx.notFound('هیچ رزروی با این کد پیگیری یافت نشد.');
      }

      return entity;
    } catch (err) {
      return ctx.internalServerError('خطا در پردازش درخواست');
    }
  },
}));

以及自定义路由定义:

module.exports = {
  routes: [
    {
      method: 'GET',
      path: '/reserves/search',
      handler: 'reserve.search',
      config: {
        auth: false,
      },
    },
  ],
};

我已将路由定义放在 /app/src/api/reserve/routes/reserves.js 中。


问题:

即使路由似乎定义正确,但 404 Not Found 响应可能是什么原因? 设置自定义搜索端点时,Strapi 中是否存在我可能会忽略的错误配置? 我将非常感谢您为解决此问题提供的任何帮助或见解。

提前谢谢您!

最重要的是,我想知道如何为此制作自定义控制器和根。

node.js controller strapi headless-cms
1个回答
0
投票

我尝试复制您的问题,但结果与您的不同。 如果自定义路由设置不正确,我会收到 403 错误。当查询结果没有找到数据时,就会出现 404 错误。

此外,您用于自定义路由的文件名似乎不正确,默认核心路由(reserve.js)将在自定义路由(reserve.js)之前加载

路线文件按字母顺序加载。要在核心路由之前加载自定义路由,请确保适当地命名自定义路由(例如 01-custom-routes.js 和 02-core-routes.js)。

https://docs.strapi.io/dev-docs/backend-customization/routes

自定义路线可以参考这个例子: https://dev.to/justinkarso/strapi-v4-extend-core-controller-and-create-custom-routes-18kc

© www.soinside.com 2019 - 2024. All rights reserved.