亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在云函數中提供靜態文件,如 swagger ui

如何在云函數中提供靜態文件,如 swagger ui

Go
陪伴而非守候 2022-06-27 16:34:28
如何使用 Go 在 Cloud Function 中提供swagger-ui-dist ?在 Cloud Functions 環境之外,我會這樣做:package mainimport ("fmt""net/http")func main() {fs := http.FileServer(http.Dir("./swagger-ui-dist"))http.Handle("/swaggerui/", http.StripPrefix("/swaggerui/", fs))http.ListenAndServe(":8080", nil)}但由于云函數使用標準 http.HanlderFunc 接口使用普通函數作為處理程序,我不知道如何使其工作。我試圖模擬這種情況以使用 http.ServeFile 進行測試,但沒有奏效。似乎沒有下載文件夾的所有內容。package mainimport (    "fmt"    "net/http")func cloudFunctionHandler(w http.ResponseWriter, r *http.Request) {    http.ServeFile(w, r, "./swagger-ui-dist")}func main() {    http.HanldeFunc("/swaggerui/", handler)    http.ListenAndServe(":8080", nil)}
查看完整描述

2 回答

?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

實際上可以通過三種方式(我知道):


從 CDN 提供靜態文件。例如來自http://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.40.0/

自己在不同的端點上托管靜態文件

將靜態文件添加到云函數的根文件夾中。這些將與您的代碼一起打包,因此在部署時可用

(我選擇了選項 3)


對于選項 2 和 3,您必須覆蓋 swaggerui 用于其靜態資產的文件夾。如何執行此操作取決于您如何配置 swagger ui。


就我而言,我使用的是 flask_restx Python 包來生成swagger.json并提供 swaggerui。所以我像這樣猴子補丁:


from flask_restx.apidoc import apidoc


apidoc.static_folder = '<MY STATIC FOLDER PATH' # e.g. os.path.abspath('static/swaggerui')


此外,您需要在運行之前將文件從 swaggerui 庫復制到函數的根目錄gcloud function deploy ...。


static在 CI 管道期間,我將文件夾從 flask_restx復制到函數的根目錄。


希望這對任何人都有幫助!


查看完整回答
反對 回復 2022-06-27
?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

我以多種方式嘗試了它,它在本地以與 Cloud Functions 相同的行為(相同的函數簽名)工作,但在 Cloud Functions 上部署后它沒有工作。

我明白為什么了。事實上,Buildpack(Google 開發的用于構建沒有 Dockerfile 的容器的工具,現在在 CNCF 沙箱中)編譯 .go 文件并將二進制文件復制到最終容器層。省略所有其他文件/目錄。因此,它不能工作!

我推薦你使用Cloud Run(與 Cloud Functions 相同的底層平臺,并且在某些情況下更便宜。我寫了一篇關于此的文章

另一種解決方案是使用未編譯的語言,例如 NodeJS 或 Python。


查看完整回答
反對 回復 2022-06-27
  • 2 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號