Как я могу обслуживать HTML-страницы в R?

У меня есть папка с 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 ответа

Я знаю, что это сообщение немного старое, но я столкнулся с подобной проблемой и поэтому подумал, что опубликую свое решение здесь.

[В сторону: я хотел обслуживать обычные html/js/css через rook в сочетании с ответами 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') и рекурсивным поиском всех подпапок.

Надеюсь это поможет!

Вы должны взглянуть на пример на ?Builder,

Вы правы, Rook ожидает, что вы предоставите "приложение". Однако "приложение" может быть построено почти так, как вы хотите. А также Builder вступает в это.

Типичное использование Builder предоставляет:

  1. URL-адреса статических страниц (JS, CSS, изображения и т. д.)
  2. URL-адреса динамических страниц, которые будут добавлены через brew() brew функция, это может быть .html или же .Rhtml страницы
  3. URL-адрес для перенаправления вашего веб-приложения (по умолчанию или индексная страница)
Другие вопросы по тегам