AWS์์ pm2
๋ก API๋ฅผ ํธ์คํ
ํ๊ณ ์์ง๋ง Swagger UI ํ์ด์ง( http://hostname:port/__swagger_/
)๋ 404 ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค. Swagger UI๋ r$run()
๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ์์ ์คํํ ๋ ์ ๋ํ๋ฉ๋๋ค. ์ด๊ฒ pm2
ํธ์คํ
์ ํ๊ณ์ธ๊ฐ์? plumber
๋ฌธ์์ ์น์
9.4๋ ๋ถํํ๋ ๋ถ์์ ํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์์๋ด๋ ๋ฐ ๊ทธ๋ฆฌ ๋ง์ ๋
ธ๋ ฅ์ ๊ธฐ์ธ์ด์ง ์์์ต๋๋ค :(
๋์ ๋ฐ์ค ํ๋? /__swagger__/
์ด์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค(์์ชฝ์ ๋ฐ์ค 2๊ฐ).
๋ถํํ๋ ์ด๊ฒ์ GitHub์ ์คํ์์ต๋๋ค. http://hostname:port/__swagger__/
๋ 404 ์ค๋ฅ๋ฅผ ๋ฐ์์ํต๋๋ค.
๋ช
ํํ ํ์๋ฉด AWS EC2 ์ธ์คํด์ค์ RStudio Server์์ plumb.R
์ ๋ด์ฉ์ ๋ํ์์ผ๋ก ์คํํ๋ฉด ๋ฉ๋๋ค. ๋ค์์ ๊ธฐ๋ณธ ์์ ๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ํ ๊ฒ์
๋๋ค.
# myfile.R
#* <strong i="7">@get</strong> /mean
normalMean <- function(samples=10){
data <- rnorm(samples)
mean(data)
}
#* <strong i="8">@post</strong> /sum
addTwo <- function(a, b){
as.numeric(a) + as.numeric(b)
}
# plumb.R
library(plumber)
r <- plumb("myfile.R") # Where 'myfile.R' is the location of the file shown above
r$run(port = 8000, host = "0.0.0.0")
pm2 ์๋น์ค(์ค์จ๊ฑฐ @ http://hostname:port/__swagger__/
์์)
pm2 start --interpreter="Rscript" plumb.R
r$run(port = 8000, host = "0.0.0.0", swagger=TRUE)
์๋
Rstudio์์๋ ์๋ํ์ง๋ง ๋์ปค์์๋ ์๋ํ์ง ์๋ ์๋น์ค์ ๋น์ทํ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ์ฝ๋๋ฅผ ์ดํด๋ณด์๊ณ swagger์ ๊ธฐ๋ณธ๊ฐ์ swagger=interactive()
์ด๋ฏ๋ก ๋ํํ ์ธ์
์์ ์คํํ ๋๋ฅผ ์ ์ธํ๊ณ ๋ช
์์ ์ผ๋ก ์์ฒญํ๋ ๊ฒฝ์ฐ์๋ง swagger ์๋ํฌ์ธํธ๊ฐ ์์ฑ๋ฉ๋๋ค.
๋ฌธ์ ์ธ์ฌ
๋ฐ์ด๋ธ
์ค, ์ข์ ์ง์ @WaterworthD . ํ๋ก๋์
ํ๊ฒฝ์์ swagger ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด swagger=TRUE
๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. (์ฌ๊ธฐ์ ๋๊ธฐ๋ ๊ณ ๊ฐ์๊ฒ ๋ฌธ์์ ํจ๊ป ๋ชจ๋ ์๋ํฌ์ธํธ๋ฅผ ์ ์ถํ๋ค๋ ์ฌ์ค์ ๋๊ตฌ๋ ๋๋ผ์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.)
@WaterworthD ๊ฐ์ฌํฉ๋๋ค. ํด๋์ต๋๋ค! @trestletech Swagger ๋ฌธ์๋ฅผ ๊ตฌ์ฒดํํ ๊ณํ์ด ์์ต๋๊น(https://www.rplumber.io/docs/tips-tricks.html#swagger)?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
r$run(port = 8000, host = "0.0.0.0", swagger=TRUE)
์๋Rstudio์์๋ ์๋ํ์ง๋ง ๋์ปค์์๋ ์๋ํ์ง ์๋ ์๋น์ค์ ๋น์ทํ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ์ฝ๋๋ฅผ ์ดํด๋ณด์๊ณ swagger์ ๊ธฐ๋ณธ๊ฐ์
swagger=interactive()
์ด๋ฏ๋ก ๋ํํ ์ธ์ ์์ ์คํํ ๋๋ฅผ ์ ์ธํ๊ณ ๋ช ์์ ์ผ๋ก ์์ฒญํ๋ ๊ฒฝ์ฐ์๋ง swagger ์๋ํฌ์ธํธ๊ฐ ์์ฑ๋ฉ๋๋ค.๋ฌธ์ ์ธ์ฌ
๋ฐ์ด๋ธ