如何在 golang 中导入生成的 SDK?

How do I import generated SDKs in golang?

我用openapi-generator分别生成多个SDK放在同一个父目录下:

sdks
--- bar-api
------ go.mod
--- foo-api
------ go.mod

我希望能够在我的客户端代码中导入 bar-api。最初有 bar-api 的 go.mod 生成为:

module github.com/coolrepo/bar-api
go 1.13

但我无法在我的客户端代码中修复导入:

bar "github.com/cool-repo/bar-api"

所以我所做的是:

sdks
--- bar-api
------ go.mod
---go.mod

即创建 sdks/go.mod:

module github.com/coolrepo

go 1.13

和手动编辑栏-api的go.mod到:

module github.com/coolrepo/bar-api

require (
    ...
)

replace github.com/coolrepo => ./..

go 1.15

有没有更好的解决方法?这个似乎有效,但这个替换看起来有点老套。

“更好的修复方法”是将所有生成的 Go 包放在一个模块中,而不是将 repo 分成多个模块。

  1. rm bar-api/go.mod
  2. go mod tidy

只有当您需要能够独立于同一回购中的另一组包来标记一组包的发布时,您才真正需要将一个回购分成单独的模块。对于生成的服务 API,这可能不值得为多个模块处理版本的开发开销。