Вызов R в качестве веб-сервиса с параметрами и загрузка JSON?

Я довольно новый с R. То, что я пытаюсь сделать, - загрузить URL-адрес из другого приложения (Java), которое будет запускать R script, и вывести JSON, чтобы мое приложение могло работать с ним.

Я понимаю, что существуют такие фреймворки, как shiny, которые действуют как веб-серверы для R, но я не могу найти документацию по этим фреймворкам о том, как передавать параметры через URL, чтобы R мог их использовать.

В идеале мне нужно будет вызвать URL-адрес, например:

http://127.0.0.1/R/param1/param2

И этот URL-адрес вызовет R script, который будет использовать param1 и param2 для выполнения некоторых функций и возврата JSON, который затем прочитаю из моего приложения.

Ответы

Ответ 1

Если вы еще этого не сделали, пожалуйста, проверьте [DeployR]. Вы также можете отправить вопросы в помощь DeployR Google Group.

Для полного раскрытия я являюсь одним из авторов DeployR

Обзор

DeployR - это технология интеграции для развертывания R-аналитики в приложениях для веб-приложений, настольных компьютеров, мобильных устройств и приборных панелей, а также для бэкэнд-систем. DeployR превращает ваши R-скрипты в веб-службы аналитики, поэтому R-код может быть легко выполнен приложениями, запущенными на защищенном сервере.

Используя аналитические веб-службы, DeployR также решает ключевые проблемы интеграции, с которыми сталкиваются те, кто использует аналитику на основе R наряду с существующей ИТ-инфраструктурой. Эти сервисы позволяют разработчикам приложений взаимодействовать с учеными-данными для интеграции аналитики R в свои приложения без каких-либо знаний в области программирования R.

DeployR доступен в двух версиях: DeployR Open и DeployR Enterprise. DeployR Open - это бесплатное решение с открытым исходным кодом, которое идеально подходит для прототипирования, создания и развертывания некритических бизнес-приложений. DeployR Enterprise масштабируется для критически важных приложений и предлагает поддержку рабочих нагрузок, а также бесшовную интеграцию с популярными решениями безопасности предприятия, такими как единый вход (SSO), протокол облегченного доступа к каталогам (LDAP)), Active Directory или Pluggable Authentication Modules (PAM).

Я новичок в R

Префект. DeployR предназначен как для Data Scientist, так и для разработчика приложений, который может не знать R.

То, что я пытаюсь сделать, - загрузить URL-адрес из другого приложения (Java), который будет запускать R script и выводить JSON, чтобы мое приложение могло работать с ним.

DeployR делает это хорошо. Чтобы помочь в обмене данными между вашим приложением и сервером DeployR (который будет выполнять ваш R) есть библиотеки клиентов DeployR.

В зависимости от ваших потребностей DeployR имеет встроенную поддержку "клиентской библиотеки":

DeployR также поддерживает RBroker Framework

если ваш прецедент или среда выполнения предвидят высокую объемную нагрузку или необходимость периодической, запланированной или пакетной обработки.

Я понимаю, что есть некоторые фреймворки, такие как блестящие, которые действуют как веб-серверы для R, но я не могу найти документацию по этим структурам о том, как передавать параметры через URL, чтобы R мог их использовать.

DeployR действует как ваш механизм анализа через APIS. В основном думать об этом как о превращая ваши R-скрипты в безопасные аналитические веб-сервисы, которые будут потребляться как любые другой веб-службы.

Параметры прохода

Передача параметров в R script в DeployR проста, однако вы должны понимать, что вы передаете параметры R script с языка, который не является R. Как таковой, существует некоторая "кодировка данных", это необходимо сделать. Например, превратите свою Java-строку в R character или вашу логическую логику Java в R logical... Библиотека клиента DeployR или RBroker упрощает эту задачу.

Похоже, вы используете Java, поэтому сначала просмотрите учебник Java java-example-client-basics https://github.com/deployr/java-example-rbroker-basics, чтобы дать вам некоторый контекст, а затем проверьте многие примеры Java в java -example-client-data-io https://github.com/deployr/java-example-client-data-io. Источник примера полностью доступен, чтобы он предоставил вам все, что вам нужно. чтобы понять, как делать базовые операции ввода-вывода из вашего приложения на сервер DeployR для вашей аналитики R.

В идеале мне нужно будет вызвать URL-адрес: http://127.0.0.1/R/param1/param2

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

Как всегда отправляйте вопросы в группу DeployR Google Group https://groups.google.com/forum/#!forum/deployr для справки.

Ответ 2

У вас есть возможность сделать это, IMHO OpenCPU является приятным.

Это самый простой способ с открытым исходным кодом для реализации веб-сервера для предоставления R-вычислений в качестве службы REST.

Создатель OpenCPU является тем же автором пакета jsonlite, и вы можете легко получить и передать json-параметры с помощью OpenCPU, так как вы можно увидеть здесь.

Ответ 3

Еще один способ реализовать веб-службу REST API в R - это plumber пакет (ранее rapier). В специальных комментариях он использует подход к оформлению функций:

# myfile.R

#* @get /mean
normalMean <- function(samples=10){
    data <- rnorm(samples)
    mean(data)
}

# service.R

library(plumber)
r <- plumb("myfile.R")  # Where 'myfile.R' is the location of the file shown above
r$run(port=8000)

Затем вызовите его:

curl "http://localhost:8000/mean"