如何使用NASA公共API从NASA联邦机构获取数据
NASA太空机构公开了多种数据,包括图像和视频,供好奇的人们探索宇宙。使用他们的开放API可以探索这些数据,任何人都可以使用这些API来开发相关应用程序。以下方法介绍了如何使用开放的API获取NASA提供的数据。
如何生成API密钥来探索NASA数据?
要探索NASA的数据,我们需要生成API密钥。
第1步: 前往NASA的开放API网站生成API密钥 https://api.nasa.gov/ 并填写详细信息以获取Web服务。
第2步: 填写所有必填字段后,API密钥将如下所示生成。
只需复制并记录下您的API密钥,我们将在我们的JavaScript中使用此密钥从NASA门户获取数据。
第3步: 生成API密钥后,转到API浏览部分,浏览NASA机构提供的API服务。
为展示API功能以及如何在我们的网站中使用它,我们将使用APOD API,该API用于探索每日天文照片。 APOD是从NASA门户获取图片的API之一,APOD代表每日天文图片。
以下是用于获取数据的查询参数:
- data: 要检索的APOD图像的日期。格式为YYYY-MM-DD, 默认值为today。
- start_date: 请求日期范围数据时的开始日期。不能与日期一起使用。格式为YYYY-MM-DD,默认值为none。
- end_date: 与start_date一起使用时的日期范围的结束日期。格式为YYYY-MM-DD, 默认值为today。
- count: 如果指定了此参数,则返回随机选择的图像。不能与日期、start_date和end_date一起使用。格式为int,默认值为none。
- thumbs: 返回数据视频缩略图的URL。如果APOD不是视频,此参数将被忽略。格式为bool, 默认值为false。
- api_key: 用于扩展使用的api.nasa.gov密钥。格式为string,默认值为DEMO_KEY。
下面是一个示例查询:
https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY
第4步: 使用以下HTML和JavaScript代码,在网页上创建一个 index.html 文件来展示今日天文图片(APOD)。
<!DOCTYPE html>
<html>
<body>
<h2>Astronomy Picture of the day</h2>
<input type="date" id="date" onchange="getDate();">
<h3 class="img-title" id="title"></h3>
<em class="date" id="pic_date"></em>
<img src="" alt="" id="apod_pic" class="img-apod">
<p class="caption" id="caption"></p>
<script type="text/javascript">
// Declaration of variables
var method = "GET";
const key =
"U0PqJ5UprbVQExkXc7ZgsGVfIM7Z1O8Uiv7g2hOO";
var url =
"https://api.nasa.gov/planetary/apod?api_key="
+ key + "&date=";
var mode = true;
var date;
// Function definition to get date from
// input box and supply in sendHttpRequest
// function
function getDate() {
date = document.getElementById("date").value;
console.log(date);
sendHttpRequest(method, url + date,
mode).then((data) => {
console.log(data);
update(data);
});
}
// Declaration of update function to
// display the fetched data on webpage
function update(data) {
document.getElementById("pic_date")
.innerHTML = data.date;
document.getElementById("title")
.innerHTML = data.title;
document.getElementById("apod_pic")
.src = data.url;
document.getElementById("caption")
.innerHTML = data.explanation;
return data;
}
// Send request to nasa portal to data
// using the XMLHttpRequest
function sendHttpRequest(method, url, mode) {
return new Promise((resolve, reject) => {
var req = new XMLHttpRequest();
req.onreadystatechange = function () {
if (this.readyState == 4) {
if (this.status == 200) {
var data = JSON
.parse(this.response);
console.log(data);
resolve(data);
}
}
}
req.open(method, url, mode);
req.send();
});
}
</script>
</body>
</html>
输出: 打开网页,选择以前的日期。选择日期后,将在页面上显示当天的天文图片,包括日期、标题和描述,如下所示。
结论: 这就是我们如何使用NASA开放的API从NASA门户网站获取数据。我们还可以使用其他服务,如EPIC(地球多色成像摄像头)、火星探测器以及图像和视频库。