如何从API字段提取指定数据?筛选Rest Countries API获取195个国家
筛选主权国家的实现方法
REST Countries返回的249个条目里包含了主权国家、海外属地、争议地区、特殊行政区等非主权实体,你可以通过以下两种方案筛选出需要的195个主权国家:
方案1:API层面直接过滤(推荐)
REST Countries V3.1及以上版本支持按status字段筛选,仅拉取联合国官方正式承认的主权国家,返回结果刚好匹配195个的常规统计范围,能减少返回数据量,请求示例如下:
import { useState, useEffect } from 'react' function CountryList() { const [countries, setCountries] = useState([]) useEffect(() => { // status=officially-assigned 就是主权国家过滤参数,后面fields可以按需指定要返回的字段 fetch('https://restcountries.com/v3.1/all?status=officially-assigned&fields=name,cca2,flag,population') .then(res => res.json()) .then(data => setCountries(data)) }, []) // 渲染列表逻辑 return ( <ul> {countries.map(country => ( <li key={country.cca2}>{country.name.common} {country.flag}</li> ))} </ul> ) }
方案2:本地二次校验(100%对齐你指定的列表)
如果需要完全匹配你参考的195国列表,避免个别国家认定标准的差异,可以提前整理好目标国家的二位国家代码(CCA2代码,比如中国是CN、美国是US),拿到API返回数据后做本地过滤:
// 把你需要的195个国家的CCA2代码全部填入这个数组即可 const TARGET_COUNTRY_CODES = ['CN', 'US', 'JP', 'KR', 'GB', 'FR' /* 补全剩余189个代码 */] // 过滤逻辑 const filteredCountries = allCountries.filter(country => TARGET_COUNTRY_CODES.includes(country.cca2))
小提示
如果你还在使用V2版本的REST Countries,没有status过滤参数,直接用方案2的本地过滤逻辑即可,CCA2代码是全球统一的,不会随API版本变动。
内容的提问来源于stack exchange,提问作者bexarKnuckles
相关产品推荐
相关产品推荐

