2013-02-27 60 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应用(默认值,或索引,页面)