Я создал фиктивную модель, используя приведенный ниже код:
#get the data
data(Boston, package="MASS")
# train a model for median house price as a function of the other variables
bos_rf <- lm(medv ~ crim + indus + dis , data=Boston)
# save the model
saveRDS(bos_rf, "bos_rf.rds")
Теперь я хочу представить эту модель как API с помощью сантехника. Для этого мой код
# load as bos_rf.R
bos_rf <- readRDS("bos_rf.rds")
#* @param input_json JSON file
#* @post /score
function(input_json)
{
temp <- toJSON(input_json, auto_unbox = T)
data <- fromJSON(temp) %>% as.data.frame
data = data %>% mutate_all(as.numeric)
predict(bos_rf, data)
}
Над моим параметром находится JSON, я очень хочу сохранить его как фрейм данных. Я конвертирую JSON в фрейм данных в функции
Затем я запускаю API, используя
# try API 1
#
dummy_model_api <- plumber::plumb("2_R_code_to_API.R")
dummy_model_api$run(host = '127.0.0.1', port = 8000)
API работает нормально, когда я вставляю JSON в портал swagger, но когда я запускаю curl, используя следующие команды
$ curl "http://127.0.0.1:8000/score" -d "@test.JSON"
$ curl --data @test.json http://localhost:8000/score
Ни одной работы. как мне напрямую передать тестовый JSON в API, чтобы получить прогноз. Обратите внимание: если я проверю функцию с помощью R, я получу прогноз. Пожалуйста, посоветуйте, как можно передать JSON или DF напрямую в запрос curl API и получить ответ по сравнению с ручным копированием json / или определением входных данных API с каждой переменной один за другим. Такой метод невозможен с сотнями переменных.
Как образец этого JSON может уже отражаться в теле чванства. то есть выше, когда чванство открывается, образец JSON уже находится в теле с некоторыми значениями и готов к выполнению.