如何使用 Strapi 4 创建路线?

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

我正在尝试设置一条路线。我遵循了一个教程。 一切都发生在 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": {}
    }
}

我做错了什么?是不是少了点什么?

api routes relational-database strapi
2个回答
0
投票

我认为网址应该像 http://localhost:1337/api/posts/1/comments 而不是 http://localhost:1337/api/posts/:id/comments。意味着 url 应提供实际的 id 而不是 ':id'。尝试一下。


0
投票
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',
  },
];
© www.soinside.com 2019 - 2024. All rights reserved.