我正在尝试使用shiny-server作为进程服务器:接收URL请求,处理R子例程并输出
JSON作为结果.但我无法在
JSON中直接将输出打印到浏览器.
是否可以这种方式使用闪亮的服务器?
PD:我知道这不是闪亮服务器的典型用法
非常感谢!
解决方法
听起来您正在尝试使用闪亮的服务器构建REST或JSON-RPC Web服务.目前这不可能(使用Shiny Server v1.2).
闪亮的服务器呈现文本/ html模板(shinyUI)页面并使用WebSocket回调来填充内容. @ScottChamberlain的答案将在Web浏览器的HTML主体中呈现JSON.这不适用于程序化Web请求.
我发现rApache,Rook和RJSONIO是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 – 不建议用于生产用途