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 分开,那就是使用我的网络服务
如果您已经设置了所有 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)
| 归档时间: |
|
| 查看次数: |
1278 次 |
| 最近记录: |