Проблема генерации спецификации для типа ответа JSON массива пользователей - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть проект Go, представляющий API REST CRUD, для коллекции Mongo.Я использую go-swagger для генерации спецификации swagger.Однако у меня возникают проблемы с получением ответа JSON, который выглядит так, как я хочу, не нарушая генератор спецификаций go-swagger.

Я пытаюсь использовать go-swagger для генерации спецификации swagger из аннотаций на ходукод.Я хотел бы посмотреть, смогу ли я сделать ответ просто JSON Array of Users, как показано ниже.

Есть ли способ настроить аннотацию json в структуре User для получения желаемого результата?

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

Ниже приводится то, что я получаю, по понятным причинам, объект JSON, содержащий ключ«data», со значением массива пользовательских объектов.

Я пытался переопределить структуру ответа 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
...