闪亮的服务器.打印JSON作为结果输出

Ale*_* A. 7 rest r json-rpc shiny shiny-server

我正在尝试使用shiny-server作为进程服务器:接收URL请求,处理R子例程并输出JSON作为结果.但我无法在JSON中直接将输出打印到浏览器.

是否可以这种方式使用闪亮的服务器?

PD:我知道这不是闪亮服务器的典型用法

非常感谢!

Joc*_*ick 8

今天我发现这个包裹R函数RPC/REST-ish的其他包:

https://github.com/trestletech/plumber

通过注释R函数,如下所示:

#' @get /mean
normalMean <- function(samples=10){
  data <- rnorm(samples)
  mean(data)
}

#' @post /sum
addTwo <- function(a, b){
  as.numeric(a) + as.numeric(b)
}
Run Code Online (Sandbox Code Playgroud)

您可以将其公开为web api:

> library(plumber)
> r <- plumb("myfile.R")  # Where 'myfile.R' is the location of the file shown above
> r$run(port=8000)
Run Code Online (Sandbox Code Playgroud)


Jas*_*son 7

听起来您正在尝试使用闪亮的服务器构建REST或JSON-RPC Web服务.目前这不可能(使用Shiny Server v1.2).

闪亮的服务器呈现文本/ html模板(shinyUI)页面并使用WebSocket回调来填充内容.@ScottChamberlain的答案将在Web浏览器的HTML正文中呈现JSON.这不适用于程序化Web请求.

我发现rApache,RookRJSONIO是JSON Web服务的强大且高性能的解决方案.您需要熟悉Apache Web服务器的配置,并根据您的平台构建Apache模块.

rApache是一个将R嵌入Apache Web服务器的模块,允许您托管Rook,brew和其他R框架.

Rook定义了R应用程序和Web服务器之间的接口.这使得使用正确的内容类型轻松交付JSON有效负载.

其他选择包括:

  • OpenCPU - 专用的R HTTP服务器,明确支持 JSON RPC
  • node-rio - 与RServe接口的node.js服务器
  • FastRWeb - 用于将Web服务器连接到RServe的CGI或PHP接口
  • RServe - 二进制R TCP/IP服务器
  • httpuv - R的HTTP和WebSocket服务器库
  • R内置rhttpd - 不建议用于生产