21

別のサーバーからデータを取得する必要がある作成した光沢のあるアプリがあります。つまり、光沢のあるアプリが開かれると、他のサーバーが光沢のあるアプリに要求を送信して、アプリを開いて必要なデータをフィードします。

これをシミュレートするために、Firefox でアプリを開いたときに、R の光沢のあるアプリに次を送信できます。

 http://localhost:3838/benchmark-module/?transformerData=data/TransformerDataSampleForShiny.json

これは、内容が「data/TransformerDataSampleForShing.json」の「Transformer Data」という文字列を光沢のあるアプリに送信する単純な get 要求です。

コードを使用すると、正常に動作します。

#(Abridged code, I am only showing the start of the code)
 shinyServer(function(input, output) {
 jsonFile <- "data/TransformerDataSampleForShiny.json"
 JSONdata <- fromJSON(jsonFile)

しかし、文字列「data/TransformerDataSampleForShiny.json」をハードコーディングするのではなく、まったく同じことをしたい場合は、上記のhttpリクエストからその文字列を受け取りたいです。どうすればいいですか?? 私はコードを試しました:

shinyServer(function(input, output) {
jsonFile <- input$transformerData
JSONdata <- fromJSON(jsonFile)

そして私も試しました:

....
jsonFile <- input$TransformerData

しかし、これらのどれも機能していません。

SO主な質問は、HTTPリクエストを受信するためにどのようにコーディングすればよいですか? HTTP GET リクエストから文字列を受け取り、POST リクエストから JSON ファイルを受け取りたいです。

明確にするために、Rから投稿を送信したり、リクエストを取得したりしたくありません。それらを受け取りたいです。受信にhttrパッケージやhttpRequestパッケージが使えない

本当にありがとう!

4

4 に答える 4

15

を使用してGETリクエストを受信できますsession$clientData。例では、次を実行します

library(shiny)
runApp(list(
  ui = bootstrapPage(
    textOutput('text')
  ),
  server = function(input, output, session) {
    output$text <- renderText({
      query <- parseQueryString(session$clientData$url_search)
      paste(names(query), query, sep = "=", collapse=", ")
    })
  }
), port = 5678, launch.browser = FALSE)

に移動します

http://127.0.0.1:5678/?transformerData=data/TransformerDataSampleForShiny.json

POST リクエストを公開する方法については、@Xin Yin の回答を参照してください。

于 2014-08-13T23:06:29.940 に答える
2

エキサイティングな更新: 2017 年 1 月の時点で、RStudio Confで、これが将来のバージョンで Shiny に組み込まれることが発表されました (15:00 分に視聴を開始してください)。

2017 年 5 月現在、この API 機能はまだリリースされていませんが、すぐにリリースされることを願っています。

于 2017-05-27T02:15:22.367 に答える