#r #rest #api #httr #response.addheader
#r #rest #API #httr #ответ.addheader
Вопрос:
Я хотел бы подключиться к ресурсам COINAPI. Они предоставляют два типа авторизации. https://docs.coinapi.io/#authorization
- Пользовательский заголовок авторизации с именем X-CoinAPI-Key
- Параметр строки запроса с именем apikey
Когда я использую первый метод, он работает с базовыми запросами. Но выдает ошибку в более продвинутом.
endpoint<-"/v1/exchangerate/BTC?apikey="
Но когда я указываю конечную точку следующим образом:
endpoint <- "/v1/trades/BITSTAMP_SPOT_BTC_USD/history?time_start=2016-01-01T00:00:00/?apikey="
Я получил ошибку 401.
Второй метод пока не работает, я не совсем понимаю, как я могу указать здесь пользовательское имя заголовка.
Мне нужно получить данные отсюда:
Я был бы признателен за любую помощь по этому вопросу.
1. метод (рабочий)
library(httr)
library(jsonlite)
base <- "https://rest.coinapi.io"
endpoint <- "/v1/exchangerate/BTC?apikey="
api_key <- <KEY>
call <- paste0(base, endpoint, api_key)
call
get_prices <- GET(call)
http_status(get_prices)
class(get_prices)
get_prices_text <- content(get_prices, "text", encoding = 'UTF-8')
get_prices_json <- fromJSON(get_prices_text, flatten = TRUE)
names(get_prices_json)
get_prices_json$asset_id_base
head(get_prices_json$rates)
data<-as.data.frame(get_prices_json)
2. метод (не работает)
key<-<KEY>
GET(
url = sprintf("https://rest.coinapi.io/v1/exchangerate/BTC"),
add_headers(`Authorization` = sprintf("X-CoinAPI-Key: ", key))
) -> res
http_status(res)
Ответ №1:
Судя по примерам в документации, похоже, что он просто ищет простой заголовок, а не конкретно заголовок «Authorization». Попробуйте это
GET(
url = sprintf("https://rest.coinapi.io/v1/exchangerate/BTC"),
add_headers(`X-CoinAPI-Key` = key)
) -> res
http_status(res)