HTTR包未从API查询返回完整响应

问题描述

我正在尝试使用httr从IGDB(documentation here调用API。当我在邮递员中使用以下查询时,我没有问题,并获得了包含100个条目的完整请求:

fields rating,game; where game = 114283; limit 100; sort id desc;

此处输入示例:

    {
        "id": 442667,"game": 114283,"rating": 3.0
    },

但是,当我尝试如下使用httr在R中进行此查询时:

  string <- paste0("rating,game; where game = ",ids[1,1],"; limit 100; sort id desc;")
  data <- POST("https://api-v3.igdb.com/private/rates/",add_headers("user-key" = "XXXXXXXXXX"),query = list(fields = string)
                           )
  fromJSON(rawtochar(data$content))

它仅返回23行的数据帧:

       id   game rating
1  442667 114283      3
...
23 383956 114283     10

根据查询,其他调用类似地返回缩短长度的数据帧。

如果有人对为什么会发生这种情况有任何想法,我希望能提供一些见识。

谢谢。

解决方法

我认为您只是在错误地传递查询字符串,因为应该将其传递到http请求的-d(数据)参数中。

尝试以下操作:

  1. 将初始“字段”追加到string
  2. 将此传递到您的body请求的POST参数

所以:

string <- paste0("fields rating,game; where game = ",ids[1,1],"; limit 100; sort id desc;")
data <- POST(
  "https://api-v3.igdb.com/private/rates/",add_headers("user-key" = "XXXXXXXXXX"),body = string
)