如何在 Javascript/NodeJS 中将两个参数传递给 API 'Get' 请求

How to pass two parameters to an API 'Get' Request in Javascript/NodeJS

我有一个 React 组件,它必须使用两个参数对 MongoDB 数据库执行 find({}) 查询。

const likes = await Likes.find({ postId: postId, userId: userId }).exec()

由于 Mongo 代码只能在服务器上运行,所以我必须进行 API 调用(我使用的是 NextJS)。这个 API 调用显然是一个 GET 请求。如何使用 SWR(或获取)将 'postId' 和 'userId' 传递给获取请求?

我试图通过 'body' 将它们作为对象传递,但我认为这根本不是正确的方法。

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 请求中将参数作为 query params 传递 URL。

这是具有多个查询参数的 URL 的格式:

http://localhost:8000/api/likes/user?postId=xyz&userId=123

在这里,您可以看到?符号,表示查询参数已经启动。而且,您还会注意到 & 用于分隔多个查询参数。这样,您可以发送尽可能多的查询参数。

注:所有查询参数均为string。在您的 URL.

中,查询参数大小可以是 最多 1024 个字符

这是 node.js backend 接收查询参数 的示例代码:

exports.sampleFunction = async (req, res) => {
    const postId = req.query.postId
    const userId = req.query.userId

    // write your code here
}

这里是 使用 fetchfront-end 发送查询参数 的示例代码:

const docs = await fetch(`/api/likes/user?postId=${postId}&userId=${userId}`, {
    method: 'GET',
        headers: {
            Accept: 'application/json',
            'Content-Type': 'application/json',
        }
})
let options = {
method: 'GET',
headers: {accept: 'application/json', 'content-type': 'application/json'},
body: JSON.stringify({
    your data parameters 
}), };

fetch('url link', options)
.then(response => response.json();)
.then(response_json => {
    console.log(response_json);
})

或者也像这样在 url 中设置查询参数。 http://localhost:8000/test_data?postId=xyz&userId=123