gpt4 book ai didi

strapi - 如何在 strapi 中添加新的 API 端点路由?

转载 作者:行者123 更新时间:2023-12-05 08:31:15 33 4
gpt4 key购买 nike

我是 strapi 和后端的新手。

我创建了一个名为 post 的内容类型,默认情况下可以通过此路由 /posts/:id 访问它。但是我也希望这篇文章可以通过这条路线访问 /posts/:slug 。我尝试在 routes.json 文件中添加新路由,但是当我访问该路由时,它返回 404 错误。

我如何实现这一目标?

编辑:

我的 routes.json 文件如下所示:

{
"routes": [{
"method": "GET",
"path": "/posts",
"handler": "Post.find",
"config": {
"policies": []
}
},
{
"method": "GET",
"path": "/posts/count",
"handler": "Post.count",
"config": {
"policies": []
}
},
{
"method": "GET",
"path": "/posts/:id",
"handler": "Post.findOne",
"config": {
"policies": []
}
},
{
"method": "GET",
"path": "/posts/:slug",
"handler": "Post.findOne",
"config": {
"policies": []
}
},
{
"method": "POST",
"path": "/posts",
"handler": "Post.create",
"config": {
"policies": []
}
},
{
"method": "PUT",
"path": "/posts/:id",
"handler": "Post.update",
"config": {
"policies": []
}
},
{
"method": "DELETE",
"path": "/posts/:id",
"handler": "Post.delete",
"config": {
"policies": []
}
}
]
}

最佳答案

问题在于您的新 slug 端点使用与通过唯一标识符(每个帖子的递增编号)查找帖子的处理程序相同的处理程序。所以它没有关于 perfect-simplicity 的线索,因为它需要一个数值。

为了解决您的问题,您需要为端点创建一个新的处理程序/ Controller 。

这是 Strapi 文档的链接:
https://strapi.io/documentation/3.0.0-alpha.x/guides/controllers.html#adding-endpoints

您在创建路线时是正确的:

路径 - ./api/hello/config/routes.json

{
"routes": [
{
"method": "GET",
"path": "/hello",
"handler": "Hello.index"
}
]
}

只是您的处理程序需要更改。

路径——./api/hello/controllers/Hello.js

module.exports = {
// GET /hello
index: async ctx => {
ctx.send('Hello World!');
},
};

正如文档中提到的那样:

A route handler can only access the controllers defined in the ./api/**/controllers folders.


除此之外,你真的不应该使用 slug 因为我不认为它是你帖子中的唯一标识符(除非你阻止用户使用相同的 创建帖子完美简单 slug)。这不是最佳实践。如果您允许通过帖子的 slug 值访问帖子,您将来可能会遇到很多问题。

关于strapi - 如何在 strapi 中添加新的 API 端点路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59734822/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com