使用go-swagger进行Golang和AngularJS项目结构

时间:2017-07-12 13:52:42

标签: angularjs go swagger go-swagger

我对Golang相对较新,在之前的项目中使用了Node.JS和AngularJS,并且Golang对项目结构非常痴迷。我们的Go代码存在于一个存储库中,该存储库还包含我们的HTML,CSS和JS代码,因此我们的" web UI"是单一结账。 Go服务器提供静态页面,让AngularJS完成繁重的客户端,并提供相当复杂的RESTful API,用于与一块嵌入式硬件进行交互。我们在Go服务器代码中使用本地包含来解决代码实际上不在GOPATH中的事实。文件夹结构大致(子文件夹未显示):

/ <-- repo root, checked out wherever you want (not in GOPATH) fonts/ scripts/ <-- all the AngularJS code server/ <-- all the Go code styles/ views/ <-- all the HTML code

我现在正在使用go-swagger库从Go服务器代码中的注释生成Swagger规范,因为Swagger UI提供了一个方便的UI来与我们的服务器API进行交互。但是,我发现,如果您的代码不在GOPATH中,则无法使用go-swagger解析器的很大一部分。如果我将服务器文件夹复制到GOPATH src目录并在那里运行,我就可以开始工作了,但是每次我更新API或添加新路由时我都不想这样做。

我想我必须对文件夹结构或构建过程进行一些更改,但我想了解最合乎逻辑的前进方法。理想情况下,我们会向Gruntfile添加一个新任务,通过调用go-swagger生成swagger规范,并将该规范复制到Swagger UI的默认位置,以便我们可以为每个构建提供正确的API规范。我理解任务应该如何运作,但它不适用于我们当前的项目结构。所以:

  • 我们是否应该将Go服务器代码分解为我们在GOPATH中检出的自己的仓库?我们还有其他工具(比如ffjson)对GOPATH之外的Go代码也不满意,所以也许值得努力更新我们的构建过程来处理。
  • 有没有办法修改GOPATH(或像PATH一样添加它),这样go-swagger(和ffjson)可以在我们现有的repo结构中工作?如果可能的话,这似乎是最简单的方法。我试过查看我们的用户界面&#34;在GOPATH中的repo,但最初没有用(如果我更新了我们的导入以使用从repo根到服务器文件夹的任意路径,它可能会工作)。
  • 还有其他什么吗?正如我所说的,我对Go来说很新,这个项目已经存在了几年,当我加入时,所以我还不熟悉Go的来龙去脉。

0 个答案:

没有答案