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

R plumber API如何指定参数输入类型?如何批量设置数值型参数?

单个参数指定输入类型

Plumber原生支持在@param注解中直接声明参数类型,无需在函数内手动转换,语法为@param [参数名]:[类型] [参数描述],声明后Plumber会自动完成类型转换,转换失败时会直接返回400错误。
示例代码如下:

#* API title
#* @param param1:numeric 数值类型的入参
#*
#* @post /method_name
function(param1) param1

支持的常用类型包括numeric、integer、logical、character等。

批量统一指定所有参数为数值类型

如果有大量同类型参数,可以通过Plumber的过滤器(filter)全局统一处理,无需逐个给参数加类型声明:

# 定义过滤器,统一转换指定路由的所有入参为数值型
#' @filter convert_params_to_numeric
function(req) {
  # 可自行调整匹配的路由规则,去掉if判断则对所有接口生效
  if (req$PATH_INFO == "/method_name") {
    req$args <- lapply(req$args, function(x) {
      num_val <- as.numeric(x)
      # 可选添加校验:非数值入参直接返回错误
      if (any(is.na(num_val))) {
        stop("所有参数必须为数值类型")
      }
      return(num_val)
    })
  }
  plumber::forward()
}

# 路由定义,40个参数无需逐个声明类型
#* API title
#* @param param1
#* @param param2
#* ... 其余38个参数
#* @post /method_name
function(param1, param2, param3, ...) {
  # 所有入参已自动转为数值类型,直接使用即可
  return(sum(param1, param2, param3))
}

该方案适配所有Plumber版本,无需引入额外依赖,也可灵活调整生效的路由范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:24:05