【发布时间】:2019-11-29 11:45:59
【问题描述】:
我正在尝试制作一个简单的 API,该 API 会调用另一个返回一些信息的 API。问题是,为了连接到第二个 API,我需要将查询参数附加到它。
所以到目前为止,我尝试使用 axios.get 来获取 API。如果我不需要在此之上添加查询,那么这将非常简单,但我很难弄清楚如何在我的请求之上附加查询。
我创建了一个对象,从我的末端提取原始查询,然后我使用 JSON.stringify 将我创建的对象转换为 JSON。然后,根据我对 Axios 的理解,您可以附加参数我用逗号分隔 URL。
在第 6 行,我不确定变量是否会保留,但我绝对不能将标签 var 转换为字符串“标签”,所以这就是为什么我把它留下了大括号和反勾号。如果那是错误的,那么请纠正我如何正确地做到这一点。
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);
}
});
response 应该等于我向其发出请求的 JSON 文件。
我实际上得到的是一个错误 400,这让我觉得不知何故,Axios 与参数相处的 URL 没有对齐。 (有没有办法检查 Axios 请求的去向?如果我也能看到 axios 触发的实际 url,那么它可以帮助我解决我的问题)
理想情况下,这是我想要实现的流程。它出了点问题,但我不太确定错误在哪里。
-> 我向我的 api 发出请求,例如使用查询“科学”
-> 通过我的 API,Axios 发出 GET 请求: https://myurl.com/blah/blah?tag=science
-> 我从 GET 请求中得到 JSON 响应
-> 我的 API 显示 JSON 文件
【问题讨论】:
-
你为什么要使用这样的字符串插值:
{ tag: `${tag}` },而你可以只做{ tag: tag },甚至只是{ tag }? -
您可能会更幸运地将 objParam(未字符串化)作为第二个参数传递。或者您可能想尝试使用 qs 中的 stringify 方法,而不是使用 JSON 中的方法。我发现在 axios 中都有帮助
-
@kshetline 我只是不确定对象的值在没有引号的情况下是否有效。
标签: javascript express axios