sun*_*tam 3 rest patch go go-gorm
我正在处理补丁恢复请求,即在发送到golang时,正文json包含一些省略的值.由于未设置的值将导致golang结构变为默认值.所以我想知道是否有任何解决方案来处理补丁请求省略数据?
据我所知,像golang这样的基本类型如string/int不能为空.处理未设置的值补丁请求有不同的方法.例如:
使用指针来处理null问题
type User struct {
Name *string
}
Run Code Online (Sandbox Code Playgroud)使用可空库
type User struct {
Name sql.NullString
}
Run Code Online (Sandbox Code Playgroud)用map[string][]interface{},看看是否值设置
有没有更好的解决方案来处理struct中的可空值?因为这3应该解决可以为空的价值.
如果您PATCH以RESTful方式使用,这意味着它正在更新一些现有数据,并且只覆盖请求正文中包含的那些字段.这意味着您实际上不需要知道设置了哪些字段; 你可以加载你的规范对象并解组它来替换在JSON中找到的任何字段,同时保持其他任何字段不变:
canonObj := getObjectFromDBOrSomething()
err := json.NewDecoder(req.Body).Decode(canonObj)
Run Code Online (Sandbox Code Playgroud)
这将覆盖任何字段canonObj从请求字段,但任何字段不是在请求将不会被改变.
使用指针和omitempty标签。通过这种方式,您可以区分未设置的值、nil 和有意的零值(""、false、0)。
type User struct {
Name *string `json:"name,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1215 次 |
| 最近记录: |