如何制作Unirest示例的https版本

时间:2019-03-26 13:15:40

标签: node.js

我想使用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"}

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

有几个错误。

首先,您实际上两次在https中传递URL-首先是link参数,其次是host参数的pathoptions属性的组合。

第二,您的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();