Strapi 插件:api 不可访问,在响应中找不到

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

我想在 strapi 后端创建一个自定义 api,为此我生成了一个插件,它将帮助我为我创建一个 api ...所以我创建了一个名为 test 的插件用于测试目的,当我尝试访问测试响应时邮递员显示 404 错误无法访问...

我会告诉你代码

这是我的路线文件..

src/插件/测试/服务器/路由

export default [
   {
      method: 'GET',
      path: '/',
      handler: 'myController.index',
      config: {
         policies: [],
         auth:false
      },
   },

];

这是我的控制器文件..

src/plugins/test/server/controllers/my-controller.ts

import { Strapi } from '@strapi/strapi';

export default ({ strapi }: { strapi: Strapi }) => ({
  index(ctx) {
    ctx.body = strapi
      .plugin('test')
      .service('myService')
      .getWelcomeMessage();
  },
});

这是我的服务文件..

src/plugins/test/server/services/my-service.ts

import { Strapi } from '@strapi/strapi';

export default ({ strapi }: { strapi: Strapi }) => ({
  getWelcomeMessage() {
    return 'Welcome to Strapi 🚀';
  },
});

以上代码默认由 strapi 插件生成..当我尝试通过端点访问时

http://localhost:1337/test
没有收到回复为什么问题请帮我确定问题..

javascript typescript strapi koa
4个回答
0
投票

您需要定义路线的

prefix
controller
属性。

src/plugins/test/server/routes/index.js

export default {
  routes: [
    {
      method: 'GET',
      path: '/',
      handler: 'myController.index',
      config: {
        policies: [],
        auth: false,
      },
    },
  ],
  prefix: '/test',
  controller: 'my-controller',
};

确保在进行这些更改后重新启动 Strapi 服务器


0
投票

我认为您可能需要更新

routes
文件。您已将路由
path
设置为
'/'
,这意味着您可以通过 http://localhost:1337/ 访问此端点,而不是通过 http://localhost:1337/test。如果您只是将路由文件中的
path
更改为以下内容,它可能会起作用。

export default [
   {
      method: 'GET',
      path: '/test',
      handler: 'myController.index',
      config: {
         policies: [],
         auth:false
      },
   },
];

0
投票

你少了一个零件。 Strapi 不是很聪明地找到你的

routes.js
文件。

你要做的是在你的插件目录中创建一个文件,像这样:

plugins/my-plugin/strapi-server.js

如果在里面,你应该默认导出一个函数并返回插件的配置:

strapi-server.js
module.exports = () => {
    return {
        controllers: [
            ...
        ],
        routes: [
            {
              method: 'GET',
              path: '/',
              handler: 'myController.index',
              config: {
                  policies: [],
                  auth:false
              },  
            }
        ]
    }
}

0
投票

您收到的 404 错误可能表明您尝试访问的路由未被 Strapi 正确注册。以下是您可以检查以确定问题的一些事项:

确保您的插件已正确安装在 Strapi 上并且处于活动状态。您可以在 Strapi 主菜单的“插件”部分查看它。

确保正确定义了您尝试访问的路由。确保路由文件中定义的路由与您尝试在 Postman 中访问的路由匹配。在你的例子中,定义的路由是/,所以你应该尝试在 Postman 中访问 http://localhost:1337/test/。

确保正确定义了控制器和服务,并在各自的文件中正确导入。确保没有拼写错误或语法错误。

确保您有权访问该路线。在您的示例中,您在路由配置中将 auth 设置为 false,这意味着该路由不需要身份验证。确保您不需要通过身份验证即可访问该路线。

如果这些解决方案都不能解决问题,请检查 Strapi 日志以查看在尝试访问路由时是否生成任何错误。这可以帮助您确定问题并解决它。

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