Как управлять моделями сопоставления в REST API - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть REST API, и для каждого ответа мне нужно сопоставить свои основные модели с моделями, которые я собираюсь представить в службе REST.

Я хочу назвать модели одинаковыми, например:

package main 

type User struct {
  Name string
  Password string
}

И пользовательская структура, которую я хочу выставить в моем API:

type User struct {
  Name string
}

Как мне организовать свой код так, чтобы я не получал коллизии имен, потому что, когда я пробую это, я получаю ошибку:

предыдущее объявление на

Если я изменю пакет для моей структуры API на:

package api
type User struct { ... }

Я получаю еще одну ошибку

не может загрузить пакет: пакет ... найден пакет main и api

Если я смогу разделить модели, как я буду ссылаться на модель другого пакета:

func mapUserToApi(user User) api.User {
}

Итак, я хочу взять в качестве параметра main.User и вернуть api.User.

1 Ответ

0 голосов
/ 25 апреля 2018

Как уже отмечали другие, то, что вы хотите сделать, просто невозможно в одном и том же пакете и может вызвать путаницу даже в разных пакетах. Если вы все равно хотите пойти дальше и сделать последнее, у вас должна быть папка с именем api, и вы можете поместить в нее user.go. Пример структуры папок выглядит следующим образом:

main.go // package main
user.go // package main
/api
  user.go // package api

Что бы это ни стоило, при разработке API у меня обычно будет структура User в пакете model и структура UserResponse в пакете handler. Для конечных точек, которые принимают данные, они также будут иметь структуру UserRequest, связанную с ними. Это ясно показывает их назначение независимо от того, на какой пакет они ссылаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...