使用管道工读取json作为API函数的输入值

时间:2018-09-03 06:09:50

标签: r json api plumber

我有一个函数,将字符向量作为参数,并在处理后返回结果。

我想使用管道工将其作为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"]}

1 个答案:

答案 0 :(得分:0)

我想念可复制的示例,因此我不知道您确切想做什么以及具体问题是什么。您无需在函数中使用reqres参数,而是在不使用参数的情况下加载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"
]