如何解决有没有一种方法可以使用R Plumber在API中添加可选参数?
我正在尝试执行以下路由:
#* @get /outcomes-aggregate/<categoryId:int>/<classId>/<perspectiveID>/<sn>
#* @serializer unBoxedJSON
function(res,req,categoryId,classId,sn=NULL){
## initialization
query <- NULL
data_to_send <- list()
...
}
该api
应该以可选的sn
值接收请求。但是,这不起作用。 sn
值可能存在或可能不存在,并且基于该值运行查询。但是当我运行它时,我不断收到此错误:
call: http://localhost:3982/outcomes-aggregated/1/342342
0 "404 - Resource Not Found"
只有在我还包含sn
的情况下,它才有效。
call: http://localhost:3982/outcomes-aggregated/1/342342/NULL
更新
我更新了路由和逻辑以尝试解决此问题。
#* @get /outcomes-aggregate/<categoryId:int>/<classId>/<sn>
#* @serializer unBoxedJSON
function(res,sn=NULL){
## initialization
query <- NULL
data_to_send <- list()
...
if(missing(sn) || pracma::strcmp(sn,"NULL")){
query <- paste0("SELECT * FROM classes WHERE classID = '","'")
} else{
query <- paste0("SELECT * FROM classes WHERE classID = '","' and sn = '",sn,"'")
}
...
}
目前该方法有效,但是我仍然必须在网址中添加NULL
。我很想听听这样做的更好方法。
解决方法
您的路径有3个参数,您只提供2个。当您提供第三个参数时,它可以工作,但未映射到sn。它已映射到PerspectiveID。
/ outcomes-aggregate / categoryId:int //
,基于@BrunoTremblay的响应,我最终将函数转换为使用查询而不是路径。效果很好。
新功能如下:
#* @get /outcomes-aggregate <-- remove the path
#* @serializer unboxedJSON
function(res,req,categoryId,classId,sn=NULL){
## initialization
query <- NULL
data_to_send <- list()
...
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。