RStudio/Posit工作台如何创建URL路径

xxslljrj  于 2023-02-06  发布在  其他
关注(0)|答案(1)|浏览(127)

我正在浏览器中的RStudio/Posit工作台上本地运行一个闪亮的应用程序。
应用程序只打印其当前URL

library(shiny)
ui <- basicPage(
  verbatimTextOutput("url")
)

server <- function(input, output, session){
  output$url <- renderText({
    cd <- session$clientData
    url <-  paste0(cd$url_protocol, "//", cd$url_hostname, cd$url_pathname)
    cat(sprintf("Running on\n  %s\n", url))
    url
  })
}
shinyApp(ui, server, options = list(port = 4218))

例如,当我运行它时,它显示:https://POSIT_URL/s/46da136e42a33f0a920f9/p/64dab64d/。我对最后一位64dab64d感兴趣,想知道它是如何创建的。它取决于端口号,似乎与我的会话一致。是否可以在应用运行前生成/预测此数字?
我怀疑这是一个散列值,但我找不到正确的输入/散列函数。

laik7k3q

laik7k3q1#

这不完全是一个答案,而是一个蛮力的解决方案:启动应用程序,打印URL,然后再次停止应用程序。在函数中,它如下所示

# retrieves the URL for a shiny app
get_full_shiny_url <- function(port) {
  server <- function(input, output, session){
    shiny::observe(cat(paste0(
      session$clientData$url_protocol, "//", session$clientData$url_hostname,
      session$clientData$url_pathname, "\n"
    )))
    shiny::stopApp()
  }
  
  capture.output(shiny::shinyApp(shiny::basicPage(), server,
                                 options = list(port = port)))
}
get_full_shiny_url(4812)
#> https://POSIT_URL/s/46da136e42a33f0a920f9/p/64dab64d/

相关问题