Plumber: Swagger UI๋Š” pm2์™€ ํ•จ๊ป˜ 404 ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 09์›” 26์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: rstudio/plumber

AWS์—์„œ pm2 ๋กœ API๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๊ณ  ์žˆ์ง€๋งŒ Swagger UI ํŽ˜์ด์ง€( http://hostname:port/__swagger_/ )๋Š” 404 ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Swagger UI๋Š” r$run() ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•  ๋•Œ ์ž˜ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ด๊ฒŒ pm2 ํ˜ธ์ŠคํŒ…์˜ ํ•œ๊ณ„์ธ๊ฐ€์š”? plumber ๋ฌธ์„œ์˜ ์„น์…˜ 9.4๋Š” ๋ถˆํ–‰ํžˆ๋„ ๋ถˆ์™„์ „ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ์•Œ์•„๋‚ด๋Š” ๋ฐ ๊ทธ๋ฆฌ ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค :(

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

r$run(port = 8000, host = "0.0.0.0", swagger=TRUE) ์‹œ๋„

Rstudio์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ ๋„์ปค์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์„œ๋น„์Šค์™€ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์•˜๊ณ  swagger์˜ ๊ธฐ๋ณธ๊ฐ’์€ swagger=interactive() ์ด๋ฏ€๋กœ ๋Œ€ํ™”ํ˜• ์„ธ์…˜์—์„œ ์‹คํ–‰ํ•  ๋•Œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ swagger ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์•ˆ ์ธ์‚ฌ
๋ฐ์ด๋ธŒ

๋ชจ๋“  6 ๋Œ“๊ธ€

๋์— ๋ฐ‘์ค„ ํ•˜๋‚˜? /__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)?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰