【问题标题】:How can I serve html pages in R?如何在 R 中提供 html 页面?
【发布时间】:2013-02-13 13:38:50
【问题描述】:

我有一个包含 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 文件的内容并将其用作响应,但应该有更简单的方法。

【问题讨论】:

  • 为什么 R 到服务器 HTML 页面?
  • 因为我在 R 中生成 HTML 页面,我希望它是一个自动过程和跨平台,但我想我必须手动运行类似 python -m SimpleHTTPServer
  • 你可能想看看闪亮的rstudio.com/shiny

标签: r http webserver r-rook-package


【解决方案1】:

你应该看看?Builder的例子。

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

Builder 的典型用法是提供:

  1. 静态页面(js、css、图片等)的url
  2. 将通过 brew 函数 brew() 的动态页面的 URL,可以是 .html 或 .Rhtml 页面
  3. 重定向 Web 应用程序的 URL(默认或索引页面)

【讨论】:

    【解决方案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') 并递归搜索所有子文件夹可能不会更干净。

    希望这会有所帮助!

    【讨论】:

    • 太好了,我可以使用这种方法获得一个堆栈 HTML 页面来显示。那么如何处理来自客户端的 GET/POST 请求呢?我正在尝试类似下面的代码,但是如何知道 GET/POST 请求的 URL 是什么?# 使用 Builder 添加 staticApp
    猜你喜欢
    • 2023-02-03
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2018-02-05
    • 2012-09-06
    • 2016-06-14
    相关资源
    最近更新 更多