node.js - NodeJS rest api在使用参数时发送状态404怎么办?
问题描述
我在编写我的 api 时遇到了一个奇怪的问题。我正在使用 Nodejs 和 express。当我尝试使用带有参数的 GET 时会出现问题。
这是我的路线代码
router.get('/addFriends/:email', (req, res, next) =>{
const email = req.params.email;
UserSchema.find({email: email}, { "friendsPending.emailSender": 1, _id : 0}, (err, data) =>{
if(err){
res.status(404).send(err);
}else{
res.status(200).send(data[0]);
}
});
});
这是我在 Postman 中的电话:/users/addFriends?email=a
运行此调用时,服务器返回 404 状态。即使我用另一个 get 电话测试它,它也发生了。
任何评论都适用,但是其他 POST 和 GET 调用正常工作(它们使用正文而不是参数)。谢谢
解决方案
您混合了查询参数和 url 参数。要使您的示例正常工作,您需要使用/addFriends/my-email@gmail.com
而不是/users/addFriends?email=a
.
如果您需要通过查询参数(之后的所有内容?
)发送电子邮件req.query
,请在控制器中使用而不是req.params.email
.
推荐阅读
- python - Keras 回归模型不能同时拟合 2 个标签
- asp.net-mvc - 如何在导航页面中包含搜索栏
- spring - 如何使用 Spring-Boot 的 RestTemplate 在 uri 标记中获取 http-client-requests 指标的模板值?
- sql - 你能解释一下下面的 SQL (postgres) 代码吗?
- javascript - 自定义样式输入类型范围的功能问题
- graphql - Prisma 不返回创建的相关记录
- java - 从用户输入中反转字符串
- cordova - 如何在 Ionic Application 中记录应用程序加载时间?(在 Ionic v3 和 Ionic v4 中)
- c - 转义括号文字内的 Scanf 十进制数
- vue.js - v-calendar 插件日期格式