Как я могу обслуживать 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
предоставляет:
- URL-адреса статических страниц (JS, CSS, изображения и т. д.)
- URL-адреса динамических страниц, которые будут добавлены через brew()
brew
функция, это может быть.html
или же.Rhtml
страницы - URL-адрес для перенаправления вашего веб-приложения (по умолчанию или индексная страница)