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