我有一个用Go编写的应用程序,它公开了REST API。我正在尝试为该API添加详尽的文档。这个想法是在用户尝试点击/ api-docs时提供swagger规范,并在用户点击/ swaggerui时显示swagger UI / redoc UI。 swagger spec(.json)文件是预先生成的,并且是代码库的一部分。为了公开swagger规范,我尝试使用ioUitl.ReadFile和http.ServeFile阅读swagger规范。从IDE或当前目录运行该文件时效果很好,但是如果我构建该应用程序以创建可执行文件并将该可执行文件复制到另一个位置,则该文件不起作用。看起来它正在从文件系统而不是从可执行文件中读取。我来自Java背景,可以轻松实现加载Web应用程序中捆绑的资源。我是golang的新手,并且需要有关如何将json文件作为可执行文件的一部分进行捆绑以及在收到API请求时读取/提供json的帮助。
我尝试过的示例:-
func serveswagger(w http.ResponseWriter, r *http.Request) {
b, err := ioutil.ReadFile("api/api-docs/swagger.json")
if err != nil {
fmt.Print(err)
}
w.Write(b)
}
func pastaWorkspacePage(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "api/api-docs/swagger.json")
}