2016-06-16 7 views
0

Ich habe eine PostgreSQL-Datenbank, für die ich RESTful Api mit Talend DI erstellt, die mir Tabellen abfragen können
Jetzt ist meine Frage, wie ich meine Apis in Shiny aufrufen und die empfangenen Daten anzeigen?Anzeige HTTP GET Daten in SHINY

Beispiel http get Antwort:

[{"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"}]}}] 

Ps: Ich habe kein Problem, das es mit ‚RPostgreSQL‘ Paket in Shiny tut direkt zu meiner Datenbank zu verbinden, aber ich ziehe es aus glänzend zu trennen und das wäre durch die Verwendung meiner Web-Services

Antwort

1

Wenn Sie die API alle Setup haben, dann könnten Sie so etwas tun:

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)) 

zum Beispiel den Text in der Textbox auf " param1 = Wert1 & param2 = Wert2 "sendet eine GET-Anfrage an die ausgewählte URL. Dies ist möglicherweise nicht die Art, wie Sie dies implementieren möchten, aber vielleicht gibt Ihnen das eine Idee, wie das gemacht werden kann.

Wenn ich das Beispiel Abfrage Stachel verwende ich, indem Sie zum Beispiel Zugriff „param1“ 's-Wert könnte:

content(res)$args$param1 
+0

funktionierte ziemlich gut, aber es macht die Daten, da sie nicht als eine Tabelle ist, wie kann Ich lege es in einen Tisch? –

+0

Sie müssen ein data.frame oder eine Matrix erstellen, um die Tabelle rendern zu lassen, schauen Sie sich "? RenderDataTable" oder "? RenderTable" an. Ich habe meine Antwort aktualisiert, um die in einer Tabelle zurückgegebenen GET-Parameter zu setzen. –