1

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

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

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

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

4

2 回答 2

2

我知道这篇文章有点旧,但我遇到了类似的问题,所以我想我会在这里发布我的解决方案。

[旁白:我想通过 rook 提供常规的 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') 并递归搜索所有子文件夹可能不会更干净。

希望这可以帮助!

于 2013-07-29T22:41:31.043 回答
1

你应该看看这个例子?Builder

你说得对,Rook希望你提供一个“应用程序”。但是,几乎可以根据需要构建“应用程序”。并Builder进入这一点。

的典型用法Builder是提供:

  1. 静态页面的 url(js、css、图像等)
  2. 将通过函数 brew() 的动态页面的 url brew,这些可以是.html.Rhtmlpages
  3. 用于重定向您的 Web 应用程序的 url(默认或索引页面)
于 2013-11-04T22:52:46.447 回答