javascript - 将查询参数附加到 GET 请求?
问题描述
我正在尝试制作一个简单的 API 来调用另一个返回一些信息的 API。问题是,为了连接到第二个 API,我需要将查询参数附加到它。
所以到目前为止我尝试做的是使用 axios.get 来获取 API。如果我不需要在此之上添加查询,那么这将非常简单,但我很难弄清楚如何在我的请求之上附加查询。
我创建了一个对象,该对象从我的末端提取了原始查询,然后我使用 JSON.stringify 将我制作的对象转换为 JSON。然后,根据我对 Axios 的理解,您可以附加参数我用逗号分隔 URL。
在第 6 行,我不确定变量是否会保留,但我绝对不能将标签 var 转换为字符串“tag”,所以这就是为什么我把它留下了大括号和反引号。如果那是错误的,那么请纠正我如何正确地做到这一点。
var 标记是我从最后提取的查询的名称。该标签是需要转移到 Axios GET 请求的内容。
app.get('/api/posts', async (req, res) => {
try {
const url = 'https://myurl.com/blah/blah';
let tag = req.query.tag;
objParam = {
tag: `${tag}`
};
jsonParam = JSON.stringify(objParam);
let response = await axios.get(url, jsonParam);
res.json(response);
} catch (err) {
res.send(err);
}
});
响应应该等于我向其发出请求的 JSON 文件。
我实际上得到的是一个错误 400,这让我觉得不知何故,Axios 与参数相处的 URL 没有对齐。(有没有办法检查 Axios 请求的去向?如果我也能看到 axios 触发的实际 url,那么它可以帮助我解决我的问题)
理想情况下,这是我想要实现的流程。它有问题,但我不太确定错误在哪里。
-> 我向我的 api 发出请求,例如使用查询“科学”
-> 通过我的 API,Axios 向: https ://myurl.com/blah/blah?tag= science 发出 GET 请求
-> 我从 GET 请求中得到 JSON 响应
-> 我的 API 显示 JSON 文件
解决方案
在查看 Axios 的README之后,看起来第二个参数需要 key params
。你可以试试:
app.get('/api/posts', async (req, res, next) => {
try {
const url = 'https://myurl.com/blah/blah';
const options = {
params: { tag: req.query.tag }
};
const response = await axios.get(url, options);
res.json(response.data);
} catch (err) {
// Be sure to call next() if you aren't handling the error.
next(err);
}
});
如果上述方法不起作用,您可以查看query-string
.
const querystring = require('query-string');
app.get('/api/posts', async (req, res, next) => {
try {
const url = 'https://myurl.com/blah/blah?' +
querystring.stringify({ tag: req.params.tag });
const response = await axios.get(url);
res.json(response.data);
} catch (err) {
next(err);
}
});
回复您的评论,是的,您可以合并多个 Axios 回复。例如,如果我期望一个对象文字是 my response.data
,我可以这样做:
const response1 = await axios.get(url1)
const response2 = await axios.get(url2)
const response3 = await axios.get(url3)
const combined = [
{ ...response1.data },
{ ...response2.data },
{ ...response3.data }
]
推荐阅读
- uiwebview - 将 UIWebView 替换为 WKWebView,但仍然来自 Apple 的相同错误
- python - 使用 shift 替换 DataFrame 中的 NaT
- python - Tkinter - 使用 place() 用文本小部件填充框架
- next.js - 我如何将 Linaria 与 NextJS 一起使用?
- awk - 使用 awk 或 sed 将小数点添加到整数
- javascript - jQuery如何重复动画
- mysql - NodeJS获取mysql查询结果
- logging - 如何在独白中使用 DeduplicationHandler?
- sql - 查询:emps 数量最高的部门名称,错误:无法对包含聚合或子查询的表达式执行聚合函数
- javascript - Redux 多次分派动作,即使它只在一个函数中分派一次