gpt4 book ai didi

node.js - Express GET 路由不适用于参数

转载 作者:搜寻专家 更新时间:2023-10-31 22:38:09 24 4
gpt4 key购买 nike

我是 Express 和 Mongoose 的新手。我目前正在处理我的第一个项目,它不是教程,但我遇到了问题。

我有多个路由,它们在 index.js 中定义如下:

app.use('/api/client',require('./routes/client'));
app.use('/api/host',require('./routes/host'));

在路由中,有多个可用的动词,如 PUT 和 POST。这是有问题的路线(我正在尝试做更多这里介绍的内容,但这里介绍的内容效果不佳):

router.get('/ama/:id', function (req, res, next) {
Ama.findById(req.params.id).then(function(Ama){
res.send(Ama);
});
});

这应该行得通,对吧?它应该返回数据库中具有该 ID 的文档。我检查了文件是否存在,大概检查了 100 次左右。现在,如果我极大地简化路由,删除 id,并做出简单的响应,则路由有效:

router.get('/ama', function (req, res, next) {
res.send({type:"GET"});
});

这太奇怪了,只要我添加参数,我就会得到:

<pre>Cannot GET /api/host/ama</pre>

在 Postman 中。

有什么想法吗? Mongod 正在运行,我的其他路线正在运行。

最佳答案

您似乎正在尝试检索此 URL:

/api/host/ama?id=SOMEID

但是,您有一个为 URL 声明的路由,如下所示:

/api/host/ama/SOMEID

换句话说,id 是 URL 路径的一部分,而不是作为查询字符串参数传递(这就是 /:id 的意思:它是 URL 一部分的占位符路由应该匹配)。

因此,要么通过将 id 添加到路径 (/api/host/ama/58e395a8c6aaca2560089c‌ e7) 来更改请求 URL,或者将您的路由处理程序重写为如下内容:

router.get('/ama', function (req, res, next) {
Ama.findById(req.query.id).then(function(Ama){
res.send(Ama);
});
});

但是,我建议使用前者(使 id 成为 URL 的一部分)。

关于node.js - Express GET 路由不适用于参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43208713/

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