我想使用node.js中的https库向该api发送请求: https://rapidapi.com/dimas/api/NasaAPI?endpoint=apiendpoint_b4e69440-f966-11e7-809f-87f99bda0814getPictureOfTheDay
RapidAPI网站上的给定示例使用Unirest,而我只想使用https库。我试图这样写:
const https = require('https');
var link = "https://NasaAPIdimasV1.p.rapidapi.com/getPictureOfTheDay";
var options = {host: "https://NasaAPIdimasV1.p.rapidapi.com/getPictureOfTheDay",
path: "/", headers: {"X-RapidAPI-Key": "---MY KEY(Yes, I've replaced it)---", "Content-Type": "application/x-www-form-urlencoded"}}
https.get(link, options, (resp) => {
let data = '';
resp.on('data', (chunk) => {
data += chunk;
});
resp.on('end', () => {
console.log(data);
});
}).on("error", (err) => {
console.log("https error 4: " + err.message);
});
但是返回以下响应:
{"message":"Endpoint\/ does not exist"}
感谢您的帮助
答案 0 :(得分:0)
有几个错误。
首先,您实际上两次在https
中传递URL-首先是link
参数,其次是host
参数的path
和options
属性的组合。
第二,您的host
实际上是完整路径-但不应该如此。最后,看起来图书馆感到困惑,而是向https://NasaAPIdimasV1.p.rapidapi.com/
发送了请求。
最后,这个特定的API需要使用“ POST”而不是“ GET”方法。文档中实际上提到了这一点。这就是为什么即使在格式正确的请求上也存在“端点不存在”错误的原因。
一种可能的方法是完全丢弃link
,并将URL作为options
的一部分发送:
var options = {
host: 'NasaAPIdimasV1.p.rapidapi.com',
method: 'POST',
path: '/getPictureOfTheDay',
headers: {/* the same */}
};
https.request(options, (resp) => { /* the same */ }).end();