我正在构建一个R / Shiny应用程序,它应该在通过HTTP GET调用时执行一些代码,非常类似于this question的第一个答案。现在,当我通过网络浏览器查看应用程序时,该应用程序工作正常,但我想要的是能够在网络浏览器之外远程调用应用程序,例如,通过来自cURL或服务器端javascript的HTTP GET调用,并使用发送给它的URL参数作为输入执行代码。
如果我在网络浏览器中访问以下网址(假设Shiny应用程序在localhost上运行),一切正常:
http://127.0.0.1:8000/?param1=val1¶m2=val2
但是,如果我改为使用cURL调用相同的URL,则不会发生任何事情(除了返回Shiny App的HTML):
curl -X GET http://127.0.0.1:8000/\?param1=val1\¶m2=val2
我的应用程序基本上是作为示例应用程序的扩展而构建在上面链接的问题的第一个答案中(由用户@jdharrison),只是它还执行一些专门服务器端的代码(即用户不可见)并且没有在前端返回),所以希望这足以作为代码示例:
library(shiny)
runApp(list(
ui = bootstrapPage(
textOutput('text')
),
server = function(input, output, session) {
output$text <- renderText({
query <- parseQueryString(session$clientData$url_search)
paste(names(query), query, sep = "=", collapse=", ")
})
}
), port = 5678, launch.browser = FALSE)
非常感谢提前!
答案 0 :(得分:3)
如果生成的HTML包含Javascript,则浏览器中的执行将与Curl中的执行非常不同,因为后者不会执行Javascript部分。