从 R 中用 header 调用 API

Calling API with header from R

我有一个 api 如下所示。 Node.js 的此代码示例。没有 header 很容易从 R 中调用 api 但使用 header 我做不到。 API 地址和 header 信息在示例代码中给出,所以谁可以帮助我将此代码转换为 R 代码。谢谢。

var request = require("request");

var options = {
  method: 'GET',
  url: 'https://covid-193.p.rapidapi.com/statistics',
  headers: {
    'x-rapidapi-host': 'covid-193.p.rapidapi.com',
    'x-rapidapi-key': 'cc818ada02msh65ebe8a8658d181p130600jsn1ee371ee7fbe'
  }
};

request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});

httr::add_headers 只需要 "named header values"。所以你只需要

library(httr)

GET("https://covid-193.p.rapidapi.com/statistics")
# Response [https://covid-193.p.rapidapi.com/statistics]
#   Date: 2020-03-29 05:02
#   Status: 401
#   Content-Type: application/json
#   Size: 139 B

GET("https://covid-193.p.rapidapi.com/statistics",
    add_headers(`x-rapidapi-host`='covid-193.p.rapidapi.com',
                `x-rapidapi-key`= 'cc818ada02msh65ebe8a8658d181p130600jsn1ee371ee7fbe'))
# Response [https://covid-193.p.rapidapi.com/statistics]
#   Date: 2020-03-29 05:02
#   Status: 200
#   Content-Type: application/json
#   Size: 37.9 kB

第一个响应是“401 Unauthorized”,第二个是“200 Success”。顺便说一句,如果那个 API 密钥对你很重要,你可能想撤销它,因为世界其他地方都有它。