如何在R Plumber中无需指定变量名发送POST请求?
让R Plumber支持直接传入数值数组的POST请求
当然可以配置R Plumber实现这个需求,核心是直接读取请求体内容而非依赖自动解析的键值对参数,以下是两种常用方案:
方案1:接收JSON格式的二维数组
这是最规范的结构化数据传递方式,适配你给出的[[1.0,0.0,0,0]]格式:
#* @post /process-json function(req) { # 解析请求体中的JSON数据 input_array <- jsonlite::fromJSON(req$postBody) # 这里添加你的业务逻辑,比如对数组进行计算 result <- list( received_data = input_array, data_dim = dim(input_array), status = "success" ) return(result) }
测试请求示例(用curl):
curl -X POST -H "Content-Type: application/json" -d "[[1.0,0.0,0,0]]" http://localhost:8000/process-json
方案2:接收纯逗号分隔的文本字符串
如果前端只能传递纯逗号分隔的数值串(比如1.0,0.0,0,0),可以直接处理纯文本请求体:
#* @post /process-text function(req) { # 读取纯文本请求体内容 raw_text <- req$postBody # 分割字符串并转换为数值数组,按需转为二维格式 input_vector <- as.numeric(strsplit(raw_text, ",")[[1]]) input_array <- matrix(input_vector, nrow = 1) # 转为1行4列的二维数组 # 业务逻辑处理 result <- list( received_data = input_array, original_text = raw_text, status = "success" ) return(result) }
测试请求示例:
curl -X POST -H "Content-Type: text/plain" -d "1.0,0.0,0,0" http://localhost:8000/process-text
关键说明
- 核心是通过
req$postBody直接获取完整的请求体内容,绕过Plumber默认的键值对参数解析逻辑 - 务必让请求头的
Content-Type与传递的数据格式匹配:JSON用application/json,纯文本用text/plain - JSON格式更适合传递结构化的多维数组,能避免字符串分割时的格式错误问题
内容的提问来源于stack exchange,提问作者Glry Gui
相关产品推荐
相关产品推荐

