我正在尝试设置一条路线。我遵循了一个教程。 一切都发生在 api 文件夹内的文件夹中。
Route 文件夹包含 post.js 文件:
'use strict';
/**
* post router.
*/
const { createCoreRouter } = require('@strapi/strapi').factories;
module.exports = createCoreRouter('api::post.post', {
method: 'GET',
path: '/api/posts/:id/comments',
handler: 'posts.comments'
});
Controllers 文件夹包含另一个 post.js 文件:
'use strict';
/**
* post controller
*/
const { createCoreController } = require('@strapi/strapi').factories;
module.exports = createCoreController('api::post.post', ({strapi}) => ({
comments: async (ctx) => {
return "Hello"
}
}));
最后,当我测试 URL 时:http://localhost:1337/api/posts/:id/comments;我有:
{
"data": null,
"error": {
"status": 404,
"name": "NotFoundError",
"message": "Not Found",
"details": {}
}
}
我做错了什么?是不是少了点什么?
我认为网址应该像 http://localhost:1337/api/posts/1/comments 而不是 http://localhost:1337/api/posts/:id/comments。意味着 url 应提供实际的 id 而不是 ':id'。尝试一下。
const { createCoreRouter } = require('@strapi/strapi').factories;
const defaultRouter = createCoreRouter('api::post.post');
const customRouter = (innerRouter, extraRoutes = []) => {
let routes;
return {
get prefix() {
return innerRouter.prefix;
},
get routes() {
if (!routes) routes = innerRouter.routes.concat(extraRoutes);
return routes;
},
};
};
const myExtraRoutes = [
{
method: 'POST',
path: '/api/posts/:id/comments',
handler: 'api::post.post.comments',
},
];