У меня есть несколько проблем при реализации REST API в Go.
Я использую go -swagger для документирования своего API. Он генерирует модель, основанную на структурах.
Моя первая проблема - я не знаю в своем файле swamger yaml, как определить простые отношения hasMany.
Если мне нужно транспортное средство с большим количеством колеса. В моей базе данных у меня будет таблица vehicle
и таблица wheel
, которая содержит id
транспортного средства.
Так как у автомобиля нет wheel_id
, в swagger я получаю простой type: object
, Для колеса у меня есть свойство:
vehicle:
$ref: '#/definitions/Vehicle'
Это создает модель:
type Wheel struct {
...
Vehicle *Vehicle
}
Это не то, что я хочу, чтобы мой API возвращал, когда я запрашиваю список колес.
Так что мне нужен DTO или какой-то маппер для работы между клиентом и базой данных.
Чтение https://www.reddit.com/r/golang/comments/6xgzmp/model_to_dto_mapper_my_first_experience_with_go/ похоже, это не способ делать вещи в Go.
Нужно ли мне удалять все ссылки из файла сваггера, чтобы он лучше соответствовал модели? (замените $ ref на идентификатор свойства: тип: строка)
Нужно ли использовать отражение, как описано здесь: Аналог оператора распространения ?
Какова лучшая практика в этом случай