我正在構建一個R/Shiny應用程序,該應用程序在通過HTTP GET調用時應執行一些代碼,這與第一個回答爲this question非常相似。現在,當我通過網絡瀏覽器查看應用程序時,該應用程序運行良好,但我想要的是真正能夠在網絡瀏覽器外部遠程調用應用程序,例如,通過來自cURL或服務器端javascript的HTTP GET調用,並使用URL參數作爲輸入來執行代碼。通過HTTP GET(例如cURL)調用Shiny應用程序執行代碼
如果我請訪問以下網址在我的網頁瀏覽器(假設閃亮的應用程序是在本地主機上運行),一切都工作得很好:
http://127.0.0.1:8000/?param1=val1¶m2=val2
但如果我不是調用同一個URL中使用捲曲,沒什麼發生(除了HTML爲閃亮應用返回):
curl -X GET http://127.0.0.1:8000/\?param1=val1\¶m2=val2
我的應用程序被基本上構建爲當在所述第一答案(由用戶@jdharrison)上面鏈接的問題的示例的應用的擴展,它僅還執行一些專門服務器端的代碼(即, .E。對用戶不可見並且不在前端返回),因此應該足以作爲代碼示例:
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)
非常感謝提前!
這是一個好點 - 也許整個設計理念從一開始就是錯誤的。但是,核心問題仍然存在:是否可以使用Shiny以類似於通用RESTful API的方式構建工作Web API,可通過通用GET訪問? – LCHansson 2015-01-04 15:46:29
@LCHansson是的,我認爲使用Shiny的想法是錯誤的。沒有JavaScript和WebSockets,閃亮可能沒有用處。我建議你從Shiny的依賴項開始,改爲[httpuv](http://cran.rstudio.com/package=httpuv)。 – 2015-01-04 19:43:23
@易輝,對於遲到的答案感到抱歉。您的評論正是我所期待的那種指針。如果你願意將評論轉換爲答案,我很樂意將其標記爲解決方案。謝謝! – LCHansson 2015-01-11 17:51:44