对于 javascript 和 json 来说,我是个新手。正如它很快就会显示的那样。大约 12 年前,我对 javascript 有过一些经验。但这是最小的。所以,对我宽容点吧。
很难准确解释我遇到的问题是什么。那么,我在这里举个例子。我有一个 API URL,我需要从中获取另一个 API URL,然后使用该 json 文件创建我的 html 页面。我可以很好地获取第一个 json 文件,比如说,
http://www.thiscarsite.com/API/thecars
,它的设置类似于以下示例。
{ "manufacturer": "Cheverolet",
"model": "Camaro",
"year": "1990",
"styles": {
"top": "convertible",
"engine"; "v8",
"address": "http://www.somesite.com/api/90ChevCamConvV8"
}
}
正如我所说,我可以通过 fetch/await 很好地获取第一个 json 信息。或者像这样简单的事情。
const startUrl = 'http://www.thiscarsite.com/API/thecars';
fetch(startUrl)
.then(response => {
return response.json();
console.log(data);
})
.catch(error => {
console.error(error);
});
我见过通过
const newURL = data.styles.address;
获取 URL 的示例,但是我如何从上面的示例中获取地址 AND 请求第二个 json 文件呢?我没有提到第一个 json 文件中的 URL 每周可能会更改 3 或 4 次。因此,每次我需要访问它时都需要从第一个获取它。
我知道这些信息可能很容易找到。我只是在这个问题上不够聪明,无法使用正确的搜索词。
我感谢任何人花时间为我指明正确的方向。
我尝试过,但没有运气
尝试过类似的操作,我插入第二个 URL 的编辑失败了
fetch('https://example.com/endpoint1')
.then(response => {
return response.json();
})
.then(data1 => {
return fetch(`https://example.com/endpoint2?data=${data1}`);
})
.then(response => {
return response.json();
})
.then(data2 => {
console.log(data2);
})
.catch(error => {
console.error(error);
});
此外,尝试使用 2 个异步函数,但不断收到诸如“响应已调用”之类的错误(或类似的内容)
我发现我做错了什么。或者至少我的想法是错误的。我没有意识到“响应”可以被称为任何东西,并且尝试使用它两次。所以,现在我有这样的东西
async function getUrl(){
const response = await fetch(startUrl, {headers: myheader});
const data = await response.json();
console.log(data);
const newUrl = data.styles.address;
const response2 = await fetch(newUrl);
const data2 = await response2.json();
console.log(data2);
}
getUrl();