无论我多么努力,我似乎都无法弄清楚如何使用 USDA REST API。我已经学习了大约 6 个关于如何使用 REST API 的不同在线教程,所有这些教程都不适用于这个特定的 API(我确定它是我遗漏的一些小东西,但我已经浪费了无数小时来做/看教程而没有成功)。
这是他们的 API 的链接: https://ndb.nal.usda.gov/ndb/doc/apilist/API-FOOD-REPORT.md
这是我在 JavaScript 中输入的内容:
xhr = new XMLHttpRequest();
xhr.open("GET", "http://api.nal.usda.gov/ndb/reports/", true);
console.log(xhr.status);
API 说要在参数中传递你的 API KEY,但这对我来说毫无意义,因为我读过的每一个教程都没有解释如何将 KEY 作为参数传递......如果有人介意花点时间编写访问此 API 所需的代码我将感激不尽。
更新:我也试过 JQuery 方法如下:
$.get(
"http://api.nal.usda.gov/ndb/reports",
{
"api_key": "API KEY",
"ndbno": "01009"
},
function(data) {
console.log(data);
}
);
没有运气。
更新 2: 离开 JQuery 示例大约 5 分钟后,我在 chrome 控制台中收到一条错误消息:
XMLHttpRequest 无法加载 http://api.nal.usda.gov/ndb/reports?api_key=(my API key )&ndbno=01009。请求的资源上不存在“Access-Control-Allow-Origin” header 。产地' http://localhost:3000 ' 因此不允许访问。响应具有 HTTP 状态代码 403。
最终更新:问题显然出在我的 ISP 上。需要处理:(
最佳答案
您引用的文档有一个示例请求 URL:
http://api.nal.usda.gov/ndb/reports/?ndbno=01009&type=b&format=xml&api_key=DEMO_KEY
您只需替换 ndbno、type、format 和 api_key 值(“=”之后的位)。例如,如果您的 API key 是 12345,您需要像这样更改它:
http://api.nal.usda.gov/ndb/reports/?ndbno=01009&type=b&format=xml&api_key=12345
一个完整的,尽管“很差”的实现是:
var apiKey = "DEMO_KEY";
var ndbno = "01009";
var type = "b";
var format = "json";
var url = "http://api.nal.usda.gov/ndb/reports/?ndbno=" + ndbno + "&type=" + type + "&format=" + format + "&api_key=" + apiKey;
$.get(url, function( data ) {
alert( "Data Loaded: " + JSON.stringify(data) );
});
关于javascript - 使用美国农业部 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37493970/