You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用restcountries API控制台报404但仍返回数据是什么原因?

问题原因

这个问题是你的代码逻辑错误导致的,和API本身无关,具体原因如下:

  • 你连续调用了两次getCountryData方法,分别传入GB和usa两个参数,其中一个请求成功、一个请求失败,所以你既能看到返回数据的打印,也能看到404报错:
    • https://restcountries.com/v3.1/name/接口是按国家名称匹配数据的,你传入usa是美国的通用名称,接口能匹配到对应数据,请求成功,所以你能看到console.log(data)的输出
    • 你传入的GB是英国的二字国家代码,不符合name接口的匹配规则,接口找不到对应资源返回404,就是你看到的报错来源。如果你需要传国家代码查询,应该使用https://restcountries.com/v3.1/alpha/${country}接口。

代码额外兼容修改建议

restcountries v3版本的返回结构和旧版本不同,你当前的字段取值逻辑存在兼容性问题,需要做以下修改:

  • 国旗地址:把${data.flag}替换为${data.flags.png}
  • 国家名称:把${data.name}替换为${data.name.common}
  • 语言取值:你写死的${data.languages.eng}只对英语国家生效,其他国家会返回undefined,建议修改为${Object.values(data.languages)[0]}取该国第一个语言的值
  • 货币取值:把${data.currencies.symbol}替换为${Object.values(data.currencies)[0].symbol}
  • 透明度设置:把countriesContainer.lastElementChild.opacity = 1替换为countriesContainer.lastElementChild.style.opacity = 1,要操作DOM的style属性才能生效。

内容的提问来源于stack exchange,提问作者jibjab3344

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:15:09