我试图使用世界银行的API获取一些数据。 This is how to query their database.基本上要查询某个国家/地区的信息,我需要转到此网址:
http://api.worldbank.org/countries/"alpha2Code of the country"
在我的代码(Link to CodePen code.)中,我使用上一个查询中的alpha2Code添加到World Bank查询的URL。这是方法:
getDetails(alpha2Code) {
this.load('http://api.worldbank.org/countries/'+alpha2Code)
.then((countryDetails) => {
this.generateOverlay(countryDetails);
});
},
load()方法在这里定义:
load(url, type = 'json') {
return $.ajax({
dataType: type,
url: url,
});
},
根据世界银行的基本通话格式,我需要添加
format=json
以便在JSON中接收响应。不知怎的,我不认为它实际上从WorldBank获得了任何东西。
向世界银行提出的查询是为了向我提供详细信息,以便在点击后放入覆盖国家/地区标志的叠加层。
提前感谢您的帮助!
答案 0 :(得分:1)
您共享的CodePen存在的一个问题是,您的网站可能存在问题,也可能不存在问题,因为CodePen演示是通过HTTPS加载的,但是您正在请求不安全的资源(HTTP)。浏览器不喜欢这样,通常会阻止它。
不幸的是,您不能将请求更改为HTTPS,因为WorldBank API没有整理其证书,因此这些请求也会被浏览器阻止。一种解决方案是通过HTTP加载您的站点;但是,如果您的页面包含任何用户敏感信息,这显然是不可取的。
更好的方法是使用您自己的后端服务器作为代理。您可以在服务器上设置自己的API,通过HTTP查询WorldBank API,然后通过HTTPS响应您的请求。当然,这假设你可以控制你的后端,但并非总是如此。
答案 1 :(得分:0)
您需要在查询中传递所需的结果格式。例如,要查询INDIA,您需要将网址更改为:
http://api.worldbank.org/countries/IN?format=json
收到的结果数据如下:
[{"page":1,"pages":1,"per_page":"50","total":1},[{"id":"IND","iso2Code":"IN","name":"India","region":{"id":"SAS","value":"South Asia"},"adminregion":{"id":"SAS","value":"South Asia"},"incomeLevel":{"id":"LMC","value":"Lower middle income"},"lendingType":{"id":"IBD","value":"IBRD"},"capitalCity":"New Delhi","longitude":"77.225","latitude":"28.6353"}]]
默认输出为XML格式。因此,您的代码可能无法正常工作。