我有一个函数,将字符向量作为参数,并在处理后返回结果。
我想使用管道工将其作为API公开。如何传递JSON作为输入
我使用了以下代码
file_recommender = function(req,res,files){
files = as.data.frame(files)
files = files$name
files = as.character(files)
library(dplyr)
return(files)
}
在http请求中,我将数据发送为
http://127.0.0.1:8000/get_file_recommendation?files=[{"name":"pvdxmanager.h"}]
http://127.0.0.1:8000/get_file_recommendation?files={name":["pvsignmanager.cpp","pvdxmanager.cpp","pvorderoperationsmanager.h"]}
答案 0 :(得分:0)
我想念可复制的示例,因此我不知道您确切想做什么以及具体问题是什么。您无需在函数中使用req
和res
参数,而是在不使用参数的情况下加载dplyr
。如果只想返回文件名,请查看下面的示例。
plumber
部分应该看起来像这样:
#* Return recommended files
#* @param files JSON containing filenames
#* @post /get_file_recommendation
file_recommender = function(files){
files = fromJSON(files)$name
}
输入:
curl -X POST "http://127.0.0.1:3070/get_file_recommendation?files=%7B%22name%22%3A%22pvdxmanager.h%22%7D" -H "accept: application/json"
对于以下JSON:
{"name":"pvdxmanager.h"}
响应:
[
"pvdxmanager.h"
]
输入:
curl -X POST "http://127.0.0.1:3070/get_file_recommendation?files=%7B%22name%22%3A%5B%22pvsignmanager.cpp%22%2C%22pvdxmanager.cpp%22%2C%22pvorderoperationsmanager.h%22%5D%7D" -H "accept: application/json"
对此JSON(您无效):
{"name":["pvsignmanager.cpp","pvdxmanager.cpp","pvorderoperationsmanager.h"]}
响应:
[
"pvsignmanager.cpp",
"pvdxmanager.cpp",
"pvorderoperationsmanager.h"
]