2016-06-16 1 views
0

J'ai une base de données PostgreSQL pour laquelle j'ai créé RESTful Api en utilisant Talend DI qui me permet d'interroger les tables
Maintenant, ma question est comment appeler mes Api en Shiny et afficher les données reçues?Afficher les données HTTP OBTENIR dans SHINY

exemple de http obtenir une réponse:

[{"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: Je n'ai aucun problème de le faire en utilisant package « RPostgreSQL » en Brillant pour se connecter directement à ma base de données, mais je préfère séparer de brillant et ce serait en utilisant mes services web

Répondre

1

Si vous avez l'API tous les réglages alors que vous pourriez faire quelque chose comme ceci:

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

par exemple la définition du texte dans la zone de texte à " param1 = valeur1 & param2 = valeur2 "envoie une requête GET à l'URL sélectionnée. Ce n'est peut-être pas la façon dont vous voulez implémenter ceci, mais cela vous donne peut-être une idée de la façon dont cela peut être fait.

Si je donne l'exemple piqûre d'interrogation que je pourrais, par exemple, la valeur de « param1 » d'accès en tapant:

content(res)$args$param1 
+0

travaillé assez bon, mais il rend les données ne sont pas aussi une table, Comment Je l'ai mis dans une table? –

+0

Vous devez construire un data.frame ou une matrice pour rendre la table, regardez '? RenderDataTable' ou'? RenderTable'. J'ai mis à jour ma réponse pour mettre les paramètres GET retournés dans une table. –