如何通过httr::PUT高效发送多行DataFrame?
批量PUT请求处理DataFrame多行数据的问题
我对API通信知识有限(正在学习弥补),目前无法一次性对DataFrame的多行执行PUT请求:当df_final仅含1行时,以下代码可正常运行;多行时请求失败并返回400状态码。
问题代码
reqBody <- list(provName = df_final$Provider,site = df_final$Site, monthJuly = df_final$July, monthAugust = df_final$August, monthSeptember = df_final$September, monthOctober = df_final$October, monthNovember = df_final$November , monthDecember = df_final$December, monthJanuary = df_final$January, monthFebruary = df_final$February, monthMarch = df_final$March, monthApril = df_final$April, monthMay = df_final$May, monthJune = df_final$June, assumptions = paste("Monthly Volume:", input$Average, "; Baseline Seasonality:", input$Year, "; Trend:", input$Year_slopes), rationale = as.character(input$Comments), fiscalYear = FY_SET, updateDtm = Sys.time()) r <- PUT(fullURL, body = reqBody, encode = "json", content_type_json())
关键现象
用with_verbose()查看请求内容后,发现两种场景下发送的JSON格式存在差异:
- 单行DataFrame时,生成的JSON为对象格式,可被API正常处理;
- 多行DataFrame时,生成的JSON为数组格式,导致请求返回400错误。
当前困境
虽然可以用lapply对每行单独发送请求,但DataFrame包含数千行数据,这种逐行请求的方式效率极低,希望能找到更高效的解决方案。
已尝试无效的方法
- 查阅过PUT请求相关的问题,未找到有效解决思路;
- 采用逐行转换DataFrame行请求体的循环方法,效率仍不理想。
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

