调用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
相关产品推荐
相关产品推荐

