【发布时间】:2021-10-11 06:17:41
【问题描述】:
我有一个 React 组件,它必须使用两个参数对 MongoDB 数据库执行 find({}) 查询。
const likes = await Likes.find({ postId: postId, userId: userId }).exec()
由于 Mongo 代码只能在服务器上运行,我必须进行 API 调用(我正在使用 NextJS)。这个 API 调用显然是一个 GET 请求。如何使用 SWR(或 fetch)将 'postId' 和 'userId' 传递给 get 请求?
我试图通过“身体”将它们作为对象传递,但我认为这根本不是正确的方法。
const likesPerUser = {
postId: postId,
userId: userId
}
const docs = await fetch('/api/likes/user', {
method: 'GET',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(likesPerUser),
})
我无权访问 URL 查询字符串
我有一种感觉,我可能在这里不太重要。任何帮助将不胜感激。 干杯, 马特
【问题讨论】:
-
通常情况下,不会将正文与 GET 请求一起使用。您是否可以修改服务器端,并将 GET 更改为 POST?
-
是的,当然,但我对 API 调用比较陌生,我认为 POST 请求仅用于创建或更新帖子?
-
同意,从语义上讲,POST 请求用于创建。但是许多设备/框架/架构不支持 GET 请求中的主体。因此,在使用正文时使用 POST 请求是安全的。如果必须使用 GET 请求,建议使用查询参数。
-
@VedantBang:将 GET 更改为 POST 只是为了让使用 body 感觉更好,这不是正确的方法......无论如何,让您的 GET 请求与 body 一起发送并没有真正的伤害
-
@MattHeslington:你为什么说你无权访问查询字符串?如果您将数据作为查询字符串传递,则可以访问它
标签: node.js mongodb next.js swr