问题描述
我正在尝试使用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
(数据)参数中。
尝试以下操作:
- 将初始“字段”追加到
string
- 将此传递到您的
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
)