簡體   English   中英

RStudio/Posit workbench 如何創建 URL 路徑

[英]RStudio/Posit workbench how does it create the URL path

我在瀏覽器的 RStudio/Posit 工作台上本地運行 shiny 應用程序。

該應用程序僅打印其當前的 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很感興趣,想知道它是如何創建的。 這取決於端口號,似乎與我的 session 一致。是否可以在應用程序運行之前生成/預測這個數字?

我懷疑它是一個散列值,但我找不到正確的輸入/散列 function。

不完全是答案,而是一種蠻力解決方法:啟動應用程序,打印 URL 並再次停止應用程序。 在 function 中它看起來像這樣

# 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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM