You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中调用Todoist REST API传递limit参数的方法咨询

解决R调用Todoist API传递limit参数的问题

问题描述

我尝试在R语言中调用Todoist的REST API获取指定数量的已完成任务,但传递limit参数时遇到困难:

  • 默认API仅返回30条已完成任务
  • 在curl中通过-d limit=200参数可以获取200条任务,命令如下:
    curl https://api.todoist.com/sync/v9/completed/get_all \ 
    -H "Authorization: Bearer 000api_key000" \ 
    -d limit=200
    
  • 已用以下R代码成功获取30条数据,但无法传递limit参数:
    library(httr)
    library(jsonlite)
    
    raw.result <- GET(url = "https://api.todoist.com", 
                      path = "/sync/v9/completed/get_all", 
                      add_headers(Authorization=paste("Bearer 000api_key000")))
    

解决方案

方法1:使用httr传递参数

curl的-d参数对应POST请求的表单数据,你可以改用POST()函数并通过body参数传递limit:

library(httr)
library(jsonlite)

raw.result <- POST(url = "https://api.todoist.com", 
                   path = "/sync/v9/completed/get_all", 
                   add_headers(Authorization = "Bearer 000api_key000"),
                   body = list(limit = 200),
                   encode = "form")

# 解析返回结果
result <- fromJSON(content(raw.result, "text"))

如果该接口支持GET请求传递查询参数,也可以用GET()的query参数实现:

raw.result <- GET(url = "https://api.todoist.com", 
                  path = "/sync/v9/completed/get_all", 
                  add_headers(Authorization = "Bearer 000api_key000"),
                  query = list(limit = 200))

方法2:推荐使用httr2(httr的替代新版本)

由于httr已被httr2替代,更推荐使用httr2的写法,代码逻辑更简洁直观:

library(httr2)
library(jsonlite)

raw.result <- request("https://api.todoist.com/sync/v9/completed/get_all") %>%
  req_headers(Authorization = "Bearer 000api_key000") %>%
  req_body_form(limit = 200) %>% # 对应curl的-d参数
  req_perform()

# 解析返回结果
result <- fromJSON(resp_body_string(raw.result))

用户反馈

Margusl的答案完美解决了问题!非常感谢Margus,我之前不知道httr已被httr2替代,因为我一直在跟随过时的教程。感谢您花时间讲解!

内容的提问来源于stack exchange,提问作者Notthy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 23:20:22