1

我有一个 Go 项目,公开 REST CRUD API,用于 Mongo 集合。我正在使用 go-swagger 来生成 swagger 规范。但是,在不破坏 go-swagger 规范生成器的情况下,我无法让 JSON 响应看起来像我想要的那样。

我正在尝试使用 go-swagger 从 go 代码的注释中生成一个 swagger-spec。我想看看我是否可以让响应只是一个 JSON 用户数组,如下所示。

有没有办法调整 User 结构上的 json 注释以产生所需的结果?

[
    {"id": "5d8e9aaca00ef6123c989f69", "user_name": "zbeeblebrox"}, 
    {"id": "5d8e9ab1a00ef6123c989f6a", "user_name": "another_user"}
]

下面是我得到的,可以理解的是,一个 JSON 对象,包含关键“数据”,其值为用户对象数组。

我尝试将 swagger 响应结构重新定义为 []*User 类型的别名,它创建了正确的响应主体,但它破坏了 go swagger 生成器。

{
  "data": [
    {"id": "5d8e9aaca00ef6123c989f69", "user_name": "zbeeblebrox"}, 
    {"id": "5d8e9ab1a00ef6123c989f6a", "user_name": "another_user"}
  ]
}

这是一些代码。

// swagger:model
type User struct {
    Id             *primitive.ObjectID      `json:"id,omitempty" bson:"_id,omitempty"`
    UserName       string                   `json:"user_name" bson:"user_name"`
}

// HTTP status code 200 and an array of repository models in data
//swagger:response usersResp
type swaggUsersResp struct {
    // in:body
    Data []*User `json:"data"`
}

我还尝试将其作为别名,它提供了所需的 JSON 响应,但会破坏 Go-Swagger 代码生成。我怀疑这是因为 swagger:response 注释应该在结构上,而不是别名上。

// swagger:response usersResp
type swaggUsersResp = []*User
4

0 回答 0