3

私は配管工パッケージを使用して REST API を開発しています。私はまだこれを行う方法の基本を学んでいます。私はAPIに次のことを望みます:

1) POST されたデータとパラメーターを受け取り、モデルを実行します。2) 結果を返送します。3) Web ページ (または任意の Web ページ) にプロットを印刷します。

#1 と #2 が機能していますが、#3 を行う方法が見つかりません。私が完全に理解していない概念がいくつかあると確信しています。

API を実行するスクリプトを次に示します。私はRStudioの1つのインスタンスでこれを実行しています:

# Packages
library(plumber)
library(jsonlite)

#* @post /predict_mtcars
mtcars.driver <- function(df, depVar, predVars){

  # Convert objects to JSON
  depVar <- fromJSON(depVar)
  predVars <- fromJSON(predVars)
  df <- fromJSON(df)

  df <- df[, c(depVar, predVars)]
  fit <- lm(df)
  outDf <- data.frame(depVar = df[depVar], 'Predicted' = predict(fit),
                      'Residuals' = fit$residuals)
  print(plot(outDf))
  return(toJSON(outDf))

}

そのスクリプトを駆動する私のコードは次のとおりです。

# Deploy.R
library(plumber)
setwd('YOUR PATH')
r <- plumb("Driver.R")
r$run(port=8080)

RStudio の 2 番目のインスタンスで実行するテスト スクリプトを次に示します。

# Packages
library(sp)
library(jsonlite)
library(httr)

# Data
data(mtcars)

# Parameters
depVar <- 'mpg'
predVars <- c('cyl', 'hp', 'wt')
df <- mtcars

body <- list("df" = toJSON(df),
             "depVar" = toJSON(depVar),
             "predVars" = toJSON(predVars))
req <- POST('http://localhost:8080/predict_mtcars', 
            body = body,
            encode = 'json',
            verbose())

outDf <- fromJSON(content(req)[[1]][1])
plot(outDf)

最初のスクリプトの print/plot ステートメントを除いて、これはすべて機能します。これについてオンラインで説明されていることはほとんど見たことがありませんが、データを API に POST してから、プロットやその他の情報を API の Web サイトに出力できると便利なようです。

配管工を使用して API をホストする方法については、まだ多くのことを学ぶ必要があることに注意してください。それが問題の一部である可能性があります。前もって感謝します。

4

1 に答える 1