你好,请别人有这个打字错误,在这个取回api调用我正在获取userIp的ip。属性IP在类型response"上不存在,这里的代码
`
let userIp = await fetch('https://api.ipify.org?format=json');
userIp = await userIp.json();
data = await fetch(
`https://geo.ipify.org/api/v1?
apiKey=API_KEY&ipAddress=${userIp.ip}`
`
首先:永远不要把你的私有API密钥放在Stack Overflow问题(或任何其他在线论坛)!我建议你重置你的密钥,因为现在任何人都可以使用它们。
您需要首先从JSON格式的响应中获取数据,然后才能访问其中的属性。在第一个请求中,您正确地使用了Response.json
方法。然而,似乎你忘了在你的第二个,这是你的问题的原因这样做:
const userInfoRes = await fetch('https://api.ipify.org?format=json');
const userInfo = await userInfoRes.json();
const dataRes = await fetch(`https://geo.ipify.org/api/v1?apiKey=API_KEY&ipAddress=${userIp.ip}`);
const data = await dataRes.json();
我认为这是因为你声明
let userIp = await fetch('https://api.ipify.org?format=json');
userIp
为Response
型。
然后是userIp = await userIp.json();
,因为userIp.json()
返回一个Promise<any>
,所以它与
相同userIp: Response = await userIp.json();
在Response
ip
键使用另一个变量修复它
let userIp = await fetch('https://api.ipify.org?format=json');
let userIpJson = await userIp.json();
//You can also put a constraint
//let userIpJson : { ip: string } = await userIp.json();
console.log(userIpJson.ip)