Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用密钥连接到R中的Rest API_R_Json_Rest_Get_Tiingo - Fatal编程技术网

使用密钥连接到R中的Rest API

使用密钥连接到R中的Rest API,r,json,rest,get,tiingo,R,Json,Rest,Get,Tiingo,这是一个简单的问题,但我还是搞不懂。我想用我的API密钥连接到REST API。我已经浏览了httr、jsonlite和其他文档,仍然不知道如何设置API键 这是终点-https://api.tiingo.com/tiingo/daily//prices?startDate=2012-1-1&endDate=2016-1-1 我已尝试在此URL上使用GET函数,并在调用中将我的API键指定为key。我还尝试了api\u key=key。我总是回401错误 谢谢在调用REST api时,必须将授权

这是一个简单的问题,但我还是搞不懂。我想用我的API密钥连接到REST API。我已经浏览了
httr
jsonlite
和其他文档,仍然不知道如何设置API键

这是终点-https://api.tiingo.com/tiingo/daily//prices?startDate=2012-1-1&endDate=2016-1-1

我已尝试在此URL上使用
GET
函数,并在调用中将我的API键指定为
key
。我还尝试了
api\u key=key
。我总是回401错误


谢谢

在调用REST api时,必须将授权添加为请求头。如果您有用户名和密码,那么授权标题将是“用户名:密码”。 如果它是一个单独的Api密钥或accessToken,那么它可以是类似于“Bearer”的东西,并替换为您的Api密钥


请求头名称应为“Authorization”

API希望有一个
Authorization
头,其中包含
您分配的令牌0k3n
。您应该将令牌存储在类似于环境变量的东西中,这样它就不会卡在脚本中。我使用了
TIINGO\u令牌
并将其放入
~/.Renviron

您可以创建一个helper函数,使调用不那么复杂:

library(httr)
library(jsonlite)
library(tidyverse)
library(hrbrthemes)

get_prices <- function(ticker, start_date, end_date, token=Sys.getenv("TIINGO_TOKEN")) {

  GET(
    url = sprintf("https://api.tiingo.com/tiingo/daily/%s/prices", ticker),
    query = list(
      startDate = start_date,
      endDate = end_date
    ),
    content_type_json(),
    add_headers(`Authorization` = sprintf("Token %s", token))
  ) -> res

  stop_for_status(res)

  content(res, as="text", encoding="UTF-8") %>%
    fromJSON(flatten=TRUE) %>%
    as_tibble() %>%
    readr::type_convert()

}

对于其他API端点,您可以遵循此习惯用法。完成后,考虑把它打包,这样社区就可以使用你所获得的知识。


您可以执行一些额外的步骤,实际生成带有日期或数字参数的函数,以实际获取这些类型的R对象,并在输入时对其进行验证。

请参见我对类似问题的回答:要在本地环境中设置令牌,请创建一个文件“~/.Renviron”,其中包含文本
TIINGO_token=“yoursassignedtk3n”
并重新启动R/RStudio。测试变量是否使用命令Sys.getenv(“TIINGO_TOKEN”)加载。如何在/.RenvironI中创建文件获取reader::type_convert()行错误:使用列规范解析:cols(date=col_datetime(format=”“)@Cing我不打算在注释中进一步分类。开始新问题或进行调试。我也从来没有使用过这个API,所以我不知道它是否改变了。太棒了!第一次工作。没有编辑。多谢各位
xdf <- get_prices("googl", "2012-1-1", "2016-1-1")

glimpse(xdf)
## Observations: 1,006
## Variables: 13
## $ date        <dttm> 2012-01-03, 2012-01-04, 2012-01-05, 2012-01-06, 2...
## $ close       <dbl> 665.41, 668.28, 659.01, 650.02, 622.46, 623.14, 62...
## $ high        <dbl> 668.15, 670.25, 663.97, 660.00, 647.00, 633.80, 62...
## $ low         <dbl> 652.3700, 660.6200, 656.2300, 649.7900, 621.2300, ...
## $ open        <dbl> 652.94, 665.03, 662.13, 659.15, 646.50, 629.75, 62...
## $ volume      <int> 7345600, 5722200, 6559200, 5380400, 11633500, 8782...
## $ adjClose    <dbl> 333.7352, 335.1747, 330.5253, 326.0164, 312.1937, ...
## $ adjHigh     <dbl> 335.1095, 336.1627, 333.0130, 331.0218, 324.5017, ...
## $ adjLow      <dbl> 327.1950, 331.3328, 329.1310, 325.9010, 311.5768, ...
## $ adjOpen     <dbl> 327.4809, 333.5446, 332.0901, 330.5955, 324.2509, ...
## $ adjVolume   <int> 3676476, 2863963, 3282882, 2692892, 5822572, 43955...
## $ divCash     <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
## $ splitFactor <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,...
ggplot(xdf, aes(date, close)) +
  geom_segment(aes(xend=date, yend=0), size=0.25) +
  scale_y_comma() +
  theme_ipsum_rc(grid="Y")