首页 > 解决方案 > 使用 httr 为列表中的每个项目发送 POST 到 API

问题描述

我有一个我想通过 API 下订单的符号列表。

toorder<-list("AAPL","CBS","NVDA","STZ")

当我使用:

for (i in toorder)
{
POST("https://paper-api.alpaca.markets/v1/orders",body = list("symbol" = paste0('"', i, '"',sep=""), "qty" = 1, "side" = "buy", "type" = "market", "time_in_force" = "day"), encode = "json",
             add_headers("APCA-API-KEY-ID" = "mykeyishere"),
add_headers("APCA-API-SECRET-KEY" = "mysecretkeyishere"),
accept_json()
             )}

没有下订单。然而,

POST("https://paper-api.alpaca.markets/v1/orders",body = list("symbol" = "AAPL", "qty" = 1, "side" = "buy", "type" = "market", "time_in_force" = "day"), encode = "json",
             add_headers("APCA-API-KEY-ID" = "mykeyisenteredhere"),
add_headers("APCA-API-SECRET-KEY" = "mysecretkeyisenteredhere"),
accept_json()
             )

工作得很好。

对我来说,为列表中的每个符号生成一次 POST 的代码的最佳方式是什么?

先感谢您!

标签: rloopshttr

解决方案


考虑将您的 POST 调用包装在一个函数中并使用lappy

PostFunciton <- function (Symbol)
{
  POST("https://paper-api.alpaca.markets/v1/orders",body = list("symbol" = Symbol), "qty" = 1, "side" = "buy", "type" = "market", "time_in_force" = "day"), encode = "json",
       add_headers("APCA-API-KEY-ID" = "mykeyishere"),
       add_headers("APCA-API-SECRET-KEY" = "mysecretkeyishere"),
       accept_json()
  )
}

Results <- lapply(toorder, PostFunciton)

推荐阅读