如何在 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
}
这里是 使用 fetch
从 front-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
我有一个 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.
这是 从 node.js backend
接收查询参数 的示例代码:
exports.sampleFunction = async (req, res) => {
const postId = req.query.postId
const userId = req.query.userId
// write your code here
}
这里是 使用 fetch
从 front-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