R Plumber API:如何处理使用数组语法的查询字符串输入
在Plumber API中处理数组形式的查询字符串参数
要处理调查平台传递的多选类型数组参数(如?this_var[0]=123&this_var[1]=456),Plumber不会自动将这类参数解析为向量,你需要手动解析查询字符串并提取目标参数:
手动解析完整查询参数
使用req$parse_query()方法获取所有查询参数,该方法会保留参数的原始键名(包括方括号部分)。筛选并提取数组参数值
从解析后的参数列表中,筛选出键名匹配this_var[数字]格式的项,提取它们的值并整理为向量。
示例代码
#* 处理多选类型的查询参数 #* @get /echo-multi function(req){ # 解析所有查询参数 query_params <- req$parse_query() # 筛选出以"this_var["开头的参数 multi_vals <- query_params[grepl("^this_var\\[", names(query_params))] # 提取值并转为向量(按索引排序确保顺序正确) sorted_vals <- unlist(multi_vals[order(names(multi_vals))]) list(selected_options = sorted_vals) }
测试说明
当访问/echo-multi?this_var[0]=123&this_var[1]=456&this_var[2]=789时,API会返回:
{ "selected_options": ["123", "456", "789"] }
补充说明
- 若不需要严格按索引顺序返回,可直接用
unlist(multi_vals)获取所有值。 - 要兼容单选和多选场景,可在代码中判断:如果存在
this_var(单选参数)则直接取值,否则按上述方法提取数组参数。
内容的提问来源于stack exchange,提问作者Runic
相关产品推荐
相关产品推荐

