Shiny-server をプロセス サーバーとして使用しようとしています。URL リクエストを受け取り、R サブルーチンを処理し、結果として JSON を出力します。出力をJSONでブラウザに直接出力できませんでした。
このように、shiny-server を使用することは可能ですか?
PD: これが光沢のあるサーバーの典型的な用途ではないことはわかっています
どうもありがとう!
Shiny-server をプロセス サーバーとして使用しようとしています。URL リクエストを受け取り、R サブルーチンを処理し、結果として JSON を出力します。出力をJSONでブラウザに直接出力できませんでした。
このように、shiny-server を使用することは可能ですか?
PD: これが光沢のあるサーバーの典型的な用途ではないことはわかっています
どうもありがとう!
今日、R 関数 RPC/REST っぽいものをラップするこの別のパッケージを見つけました。
https://github.com/trestletech/plumber
R 関数を次のようにコメントすることによって:
#' @get /mean
normalMean <- function(samples=10){
data <- rnorm(samples)
mean(data)
}
#' @post /sum
addTwo <- function(a, b){
as.numeric(a) + as.numeric(b)
}
これを Web API として公開できます。
> library(plumber)
> r <- plumb("myfile.R") # Where 'myfile.R' is the location of the file shown above
> r$run(port=8000)
光沢のあるサーバーを使用して REST または JSON-RPC Web サービスを構築しようとしているようです。これは現在不可能です (Shiny Server v1.2 では)。
Shiny サーバーは text/html テンプレート (shinyUI) ページをレンダリングし、WebSocket コールバックを使用してコンテンツを取り込みます。@ScottChamberlain からの回答は、Web ブラウザーの HTML 本文に JSON をレンダリングします。これは、プログラムによる Web リクエストでは機能しません。
rApache、Rook、およびRJSONIOが、JSON Web サービスの堅牢でパフォーマンスの高いソリューションであることがわかりました。Apache Web サーバーの構成と、プラットフォームによっては Apache モジュールの構築に慣れている必要があります。
rApacheは R を Apache Web サーバーに埋め込むモジュールで、Rook、brew、およびその他の R フレームワークをホストできるようにします。
Rookは、R アプリケーションと Web サーバー間のインターフェースを定義します。これにより、JSON ペイロードを適切なコンテンツ タイプで簡単に配信できます。
その他のオプションは次のとおりです。
私にとっては、verbatimTextOutputを使用して機能しました:
ui.R
verbatimTextOutput(outputId="jsonoutput")
server.R - json に変換されるデータが getMainData() によって返されると仮定します。
output$jsonoutput <- renderText({
data <- getMainData()
result <- jsonlite::prettify(jsonlite::toJSON(data, auto_unbox = TRUE), 4)
return(result)
})
この単純な解決策はどうですか?
https://gist.github.com/skkott/7478126
server.r
require(shiny)
require(RJSONIO)
shinyServer(function(input, output) {
output$jsonoutput <- renderText({
toJSON(list(a = 10, b = 12))
})
})
ui.r
require(shiny)
shinyUI(bootstrapPage(
mainPanel(
textOutput(outputId="jsonoutput")
)
))
文字はきれいに印刷されませんが...
また、Shiny メーリング リストでこの回答をご覧ください: https://groups.google.com/forum/#!searchin/shiny-discuss/jsonデータを API として提供するようには設計されていません。