在为用户数组的JSON响应类型生成规范时出现问题

时间:2019-09-27 23:33:35

标签: json rest go swagger go-swagger

我有一个Go项目,它为Mongo集合公开了REST CRUD API。我正在使用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对象,它包含键“ data”,其值是User对象的Array。

我尝试将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

0 个答案:

没有答案