我有一个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