json - 让 R Plumber API 在 POST 上使用 JSON

标签 json r curl plumber

我正在使用 plumber 在 R 中编写 API 和 API理想情况下,它将使用它在 POST 上收到的 JSON。但我无法获得 endpoint POST example那样工作,所以我可能遗漏了一些明显的东西。

使用示例 URL 和 Curl,我可以毫无问题地执行以下操作:

curl -i -X POST http://plumber.tres.tl/append/append -d "val=50" 

但是示例的呈现方式是:
POST {val: 50} -> http://plumber.tres.tl/append/append

建议也允许使用 JSON。所以我试过:
 curl -H "Content-Type: application/json" -X POST -d '{"val":50}' http://plumber.tres.tl/append/append

以及所有确保 UTF-8 编码的变体,注释掉 "以及各种其他组合,主要基于我在 Stackoverflow 上找到的有关帖子的内容。例如:
curl -i -X POST -H "Content-Type: application/json" http://plumber.tres.tl/append/append -d '{"val":50}'
curl -i -X POST -H "Accept: application/json" -H "Content-Type: application/json" http://plumber.tres.tl/append/append -d '{\"val\":50}'
curl -i -X POST -H "Content-Type: application/json;charset=UTF-8" http://plumber.tres.tl/append/append -d '{"val":50}'

还使用文件并尝试将其发布为 @my.json不工作。

也许它是在 Plumber 上的东西方面:我希望给定工具集来序列化输出,我还可以说明输入的预期序列化。但我还没有找到如何做到这一点。

最佳答案

事实证明,这对于水管工来说是一个相对简单的问题。函数 postBodyFilter 调用 parseQS,后者依次拆分 &= 并且尚未检查 JSON 格式(例如,基于初始 { 和结尾 } )。

由于 jsonlite 已经被包导入,我提出了一个小改动,以在 pull request #53 中添加基本的 JSON 支持。

按照 README 中的示例,添加此补丁后,以下内容将起作用:

 curl --data '{"a":4, "b":5}' http://localhost:8000/sum

由于调用 jsonlite 来解析查询字符串的内容,更复杂的 JSON 应该也是可能的,但我还没有测试过。

更新 :现在已合并到 plumber project 中,如果您使用 devtools::install_github("trestletech/plumber") 从 github 安装该版本,或在 0.3.1 版本可用后立即通过传统安装方式安装该版本,它将对您有用克兰。

关于json - 让 R Plumber API 在 POST 上使用 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38506519/

相关文章:

json - 使用 Unix 工具解析 JSON

json - 如何在 webpack-dev-server 中使用 VS Code 调试器(忽略断点)

python - 展平 JSON 文件中的多个对象

r - 消失的按钮 - 点击后

r - 使用 facet_grid 时在 ggplot2 中指定自定义误差线

ruby - 谁能告诉我现在 payflowpro 的确切 URL 是什么,Url "https://payflowpro.paypal.com"现在对我不起作用

javascript - JSON 解析 Bing map 响应

R 从一组字符串数据创建唯一键

curl - 对Elasticsearch使用curl命令时连接被拒绝

CURLOPT_WRITEFUNCTION 获取xml内容