在 SHINY 中显示 HTTP GET 数据

Ana*_*lab 2 json http-get httr shiny

我有一个 PostgreSQL 数据库,我使用 Talend DI 为其创建了 RESTful Api,它允许我查询表
现在我的问题是如何在 Shiny 中调用我的 Api 并显示收到的数据?

http获取响应示例:

 [{"medical_consultations":{"medical_consultation":[{"id":"1640087","id_consultation":"GFAPAAPA P 834406012009","consultation_date":"07-01-2009","id_center":"APA"},{"id":"1640088","id_consultation":"GFAPAAPA P1079007012010","consultation_date":"08-01-2010","id_center":"APA"},{"id":"1640089","id_consultation":"GFAPAAPA P1098811052007","consultation_date":"12-05-2007","id_center":"APA"}]}}]
Run Code Online (Sandbox Code Playgroud)

Ps:我在 Shiny 中使用“RPostgreSQL”包直接连接到我的数据库没有问题,但我更喜欢将它与 Shiny 分开,那就是使用我的网络服务

Osk*_*smo 6

如果您已经设置了所有 API,那么您可以执行以下操作:

require(shiny)
require(httr)

url <- "http://httpbin.org/get?"

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      textInput('GETargs',"GET string"),
      actionButton('sendGET','Send')
    ),
    mainPanel(
      verbatimTextOutput('GETresponse'),
      dataTableOutput('table1')
    )
  )
)

server <- function(input, output, session) {
  observeEvent(input$sendGET, {
    getargs <- input$GETargs

    if( is.null(input$GETargs) ) getargs <- ""

    res                <- GET(sprintf("%s%s",url, getargs))
    output$GETresponse <- renderPrint(content(res))

    output$table1 <- renderDataTable( as.data.frame(content(res)$args) )
  })
}

runApp(shinyApp(ui,server))
Run Code Online (Sandbox Code Playgroud)

例如,将文本框中的文本设置为“param1=value1¶m2=value2”会向选定的 URL 发送 GET 请求。这可能不是您想要实现的方式,但也许这可以让您了解如何做到这一点。

如果我使用示例查询刺痛,我可以例如通过键入来访问“param1”的值:

content(res)$args$param1
Run Code Online (Sandbox Code Playgroud)