我想在 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
没有收到回复为什么问题请帮我确定问题..
您需要定义路线的
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 服务器
我认为您可能需要更新
routes
文件。您已将路由 path
设置为 '/'
,这意味着您可以通过 http://localhost:1337/ 访问此端点,而不是通过 http://localhost:1337/test。如果您只是将路由文件中的path
更改为以下内容,它可能会起作用。
export default [
{
method: 'GET',
path: '/test',
handler: 'myController.index',
config: {
policies: [],
auth:false
},
},
];
你少了一个零件。 Strapi 不是很聪明地找到你的
routes.js
文件。
你要做的是在你的插件目录中创建一个文件,像这样:
plugins/my-plugin/strapi-server.js
如果在里面,你应该默认导出一个函数并返回插件的配置:
module.exports = () => {
return {
controllers: [
...
],
routes: [
{
method: 'GET',
path: '/',
handler: 'myController.index',
config: {
policies: [],
auth:false
},
}
]
}
}
您收到的 404 错误可能表明您尝试访问的路由未被 Strapi 正确注册。以下是您可以检查以确定问题的一些事项:
确保您的插件已正确安装在 Strapi 上并且处于活动状态。您可以在 Strapi 主菜单的“插件”部分查看它。
确保正确定义了您尝试访问的路由。确保路由文件中定义的路由与您尝试在 Postman 中访问的路由匹配。在你的例子中,定义的路由是/,所以你应该尝试在 Postman 中访问 http://localhost:1337/test/。
确保正确定义了控制器和服务,并在各自的文件中正确导入。确保没有拼写错误或语法错误。
确保您有权访问该路线。在您的示例中,您在路由配置中将 auth 设置为 false,这意味着该路由不需要身份验证。确保您不需要通过身份验证即可访问该路线。
如果这些解决方案都不能解决问题,请检查 Strapi 日志以查看在尝试访问路由时是否生成任何错误。这可以帮助您确定问题并解决它。