是否可以将数据发送到闪亮的应用程序?

时间:2019-02-06 14:40:31

标签: javascript r rest web-applications shiny

我正在使用Java(后端)和javascript构建Web应用程序。在某些时候,我的应用程序从远程数据库检索一些特定的数据。我想在我的网络应用程序中嵌入一个闪亮的应用程序,以读取,分析和可视化此数据。检索到的数据取决于用户与我的应用程序的交互。

所以基本上,我试图将数据发送到一个闪亮的应用程序(可能使用REST)。这可能吗?

2 个答案:

答案 0 :(得分:2)

当然可以! R Shiny应用程序可以以与任何Web应用程序相同的方式接收数据。例如。它可以运行一个内部计时器,以从API获取数据,从Web抓取数据或访问数据库。

一些建议

  • 您可以简单地连接到远程数据库(例如,here's如何连接到sql服务器数据库(比看起来容易)
  • 您可以使用任何适合您的语言来构建API。如果您想使用R,plumber包将是一个很好的起点
  • 一种不寻常的方式(只是显示可能的方式)是,如果您已经知道如何构建Web应用程序,则可以制作一个显示希望闪亮应用程序访问的数据,然后将Shiny应用程序刮掉的方法。您可以选择任意间隔(5秒,5小时,5天等)来获取数据。请注意,这对于任何敏感数据都不是一个好的解决方案

两个最常用的抓取软件包是rvest和(Hadley Wickham's)httr。这是访问API或从网络上的任何地方抓取原始数据的好起点

如果要连接到数据库,我建议先确定要使用的数据库,然后使用R谷歌搜索如何连接到数据库。成功后,可以在Shiny应用程序中移动该代码!

答案 1 :(得分:0)

只需添加一个示例:如果您想:

  1. 在R中计算->在任何Web应用中使用:plumber
  2. 从REST API获取->闪亮:httr

使用httr在Shiny中加载一些JSON数据(从 OpenCPU )的最小示例:

library(shiny)
library(httr)
library(dplyr)

ui <- fluidPage(
  tableOutput("tbl")
)

server <- function(input, output, session) {
  output$tbl <- renderTable( {
    # GET request from an API
    req <- httr::GET(url = "cran.ocpu.io/ggplot2/data/msleep/json")
    req_parsed <- httr::content(req, type = "application/json")

    # Convert to data.frame
    dplyr::bind_rows(req_parsed)
  })
}

shinyApp(ui, server)