Конвертировать / Скрыть значения из структуры - PullRequest
0 голосов
/ 23 октября 2018

У меня есть приложение, которое создает пользователя в базе данных и возвращает его информацию (со структурой).и я хочу отправить пользовательскую модель клиенту (ответ веб-сервера) без пароля (или больше информации, которую я не хочу, чтобы клиент получил).какой правильный способ сделать это?сделать структуру "UIUser" с единственными полями, которые я хочу отправить клиенту и преобразовать исходную модель в эту структуру?или пользовательский интерфейс?

и, конечно, если вы можете дать мне пример для решения этой проблемы.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

В общем, хорошо иметь представление о структурах, так как вы не хотите связывать формат API с внутренним представлением.В любом случае, если вы просто хотите сделать это ленивым способом и избежать сериализации пароля, вы всегда можете использовать - json struct tag:

package main

import (
    "fmt"
    "encoding/json"
    "log"
)

type user struct {
    ID      int     `json:"id"`
    Name    string  `json:"name"`
    Pass    string  `json:"-"`
}

func main() {
    u := &user{123, "John", "supersecret"}
    b, err := json.Marshal(u)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(string(b))
}

Playground

0 голосов
/ 23 октября 2018

Я видел несколько примеров того, что вы описали.Другая структура с только желаемыми данными и функцией преобразования между обеими структурами.В зависимости от вашего приложения, также можно сделать поля частными или общедоступными.Например, Json или Yaml синтаксический анализатор golang заполняет только открытые поля структуры.

Если вы пришли из более общего ООП-фона, вы всегда можете написать методы Getter-Setter в своей структуре.

Кажется, что самый простой метод - это тот, который вы написали в своем вопросе.

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