2013-02-27 57 views
1

我有一個文件夾與HTML文件,我想啓動一個簡單的HTTP服務器,提供所需的文件。如何在R中提供html頁面?

我一直試圖使用Rook,但它要求一個生成HTML響應的應用程序函數。

library(Rook) 
server <- Rhttpd$new() 
server$start(quiet=TRUE) 
server$add(name="my_app", app="path/to/app.R") 

我想我能以某種方式告訴應用功能來讀取請求的HTML文件的內容和使用,作爲響應,但應該有一個更簡單的方法。

+0

爲什麼R鍵HT服務器ML頁面? – 2013-02-28 01:05:42

+0

,因爲我在R生成HTML頁面,我希望它是一個自動過程和跨平臺,但我想我將不得不手動運行像'python -m SimpleHTTPServer' – nachocab 2013-02-28 15:48:00

+0

你可能想看看閃亮http://www.rstudio.com/shiny/ – 2013-02-28 16:03:10

回答

2

我知道這篇文章有點老,但我遇到了類似的問題,所以我想我會在這裏發佈我的解決方案。

旁白:我想通過車服務標準的HTML/JS/CSS的一起選擇使用JSON響應Ajax和統計解決方案查詢 - 因此想要使用R]

R.server <- Rhttpd$new(); # Create server 

# Use a Builder to add a 
staticApp <- Builder$new( 
    Static$new(
     urls=c('/www/css', 
      '/www/js/libs', 
      '/www/js', 
      '/www/img', 
      '/www'), 
    root=getwd() 
)) 
R.server$add(app=staticApp, name="static") 
R.server$start() 

基本上我的工作目錄包含包含一個名爲www的文件夾,其中包含我所有的靜態資源(在子文件夾css,js等中)。尤其是如果文件夾WWW包含的index.html那麼這可以通過本地主機進行訪問的文件:23702 /自定義/靜態/ WWW/index.html的

更多的R-集中操作其他應用可以很容易被納入建設者的建設。

不可能更清潔www移到root = file.path(getwd(),'www')並遞歸搜索所有子文件夾。

希望這會有所幫助!

+0

這很棒,我可以用一個堆棧的HTML頁面來顯示使用這種方法。但那麼如何處理來自客戶端的GET/POST請求呢?我正在嘗試類似下面的代碼,但接下來如何知道GET/POST請求的URL?#使用Builder添加一個 staticApp < - Builder $ new( Static $ new( urls = c('/ app','/ app/library'), root = file.path(getwd(),「 .. 「」 ..「) ), 應用$新的(功能(ENV){ REQ < - 請求$新(ENV) 資源< - 響應$新的() getstr << - 粘貼(捕獲。輸出(str(req $ GET()),file = NULL),collapse ='\ n') res $ finish() }) ) – user1905004 2014-08-03 19:48:32

1

你應該看看?Builder的例子。

您對,Rook希望您提供一個「應用程序」。然而,「應用程序」幾乎可以根據需要進行構建。並且Builder進入此。

Builder的典型用法是提供:

  1. 的網址,以靜態頁面(JS,CSS,圖像等)
  2. 的網址)經由編動態頁面,這將是釀造( brew功能,這些都可以
  3. 網址.html.Rhtml頁面重定向你的web應用(默認值,或索引,頁面)