我如何在云函数中提供像swagger UI这样的静态文件 [英] How can I serve static files like swagger ui in Cloud functions
本文介绍了我如何在云函数中提供像swagger UI这样的静态文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何使用Go在云函数中服务swagger-ui-dist?
离开云函数环境我会这样做:
package main
import (
"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 main
import (
"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)
}
推荐答案
实际上有三种可能(我知道):
- 从CDN服务静态文件。例如来自http://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.40.0/
- 在不同的终结点上自己托管静态文件
- 将静态文件添加到云函数的根文件夹中。这些代码将与您的代码打包在一起,因此在部署时可用
(我选择了选项3)
对于选项2和选项3,您必须覆盖swaggerui用于其静态资源的文件夹。如何执行此操作取决于如何配置SWAGGER用户界面。在我的例子中,我使用flask_rest x Python包来生成swagger.json
并提供swaggerui。所以我这样做了:
from flask_restx.apidoc import apidoc
apidoc.static_folder = '<MY STATIC FOLDER PATH' # e.g. os.path.abspath('static/swaggerui')
此外,在运行gcloud function deploy ...
之前,您需要将文件从swaggerui库复制到函数的根目录。
我在配置项管道期间将static
文件夹从flASK_RESTX复制到函数的根目录。
希望这对任何人都有帮助!
这篇关于我如何在云函数中提供像swagger UI这样的静态文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文