【发布时间】:2018-10-24 04:43:38
【问题描述】:
我有一个应用程序在数据库中创建一个用户并返回他的信息(使用结构)。我想将用户模型发送到客户端(Web 服务器的响应),没有密码(或者我不希望客户端获得的更多信息)。 这样做的正确方法是什么?用我想发送给客户端的唯一字段创建一个“UIUser”结构并将原始模型转换为这个结构?还是用户界面?
当然,如果你能给我一个例子来解决这个问题。
【问题讨论】:
标签: go
我有一个应用程序在数据库中创建一个用户并返回他的信息(使用结构)。我想将用户模型发送到客户端(Web 服务器的响应),没有密码(或者我不希望客户端获得的更多信息)。 这样做的正确方法是什么?用我想发送给客户端的唯一字段创建一个“UIUser”结构并将原始模型转换为这个结构?还是用户界面?
当然,如果你能给我一个例子来解决这个问题。
【问题讨论】:
标签: go
一般来说,拥有视图结构可能是一个好主意,因为您不想将 API 格式与内部表示相结合。无论如何,如果您只是想以懒惰的方式执行此操作并避免序列化密码,您始终可以使用 - json 结构标记:
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))
}
【讨论】:
我已经看到了一些按照您描述的示例。具有所需数据的不同结构和两个结构之间的转换函数。根据您的应用程序,也可以将字段设为私有或公共。例如,golang 的 Json 或 Yaml 解析器只填充结构的公共字段。
如果您有更多的 OOP 背景,您可以随时将 Getter-Setter 方法写入您的结构。
最简单的方法似乎是您在问题中写的那个。
【讨论】: