如何在R中提供html页面?

时间:2013-02-27 16:34:52

标签: r http webserver rook

我有一个包含html文件的文件夹,我想启动一个提供所请求文件的简单HTTP服务器。

我一直在尝试使用Rook,但它要求生成HTML响应的应用程序功能。

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

我想我可以以某种方式告诉应用程序函数读取所请求的HTML文件的内容并将其用作响应,但应该有一种更简单的方法。

2 个答案:

答案 0 :(得分: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 ,则可以通过 localhost:23702 / custom / static / www / index.html

更多以R为中心的操作的其他应用程序可以轻松地包含在构建器构建中。

www 移至root = file.path(getwd(),'www')并对所有子文件夹进行递归搜索时,可能不会更干净。

希望这有帮助!

答案 1 :(得分:1)

您应该查看?Builder处的示例。

你没错,Rook希望你提供一个“app”。然而,“app”几乎可以根据需要构建。并Builder进入了这一点。

Builder的典型用法是提供:

  1. 静态页面的网址(js,css,图像等)
  2. 将通过brew函数生成brew()的动态网页的网址,这些网址可以是.html.Rhtml个网页
  3. 重定向您的网络应用程序的网址(默认或索引页面)