借这个课程的问答区问老师个问题,go 语言做 restful api 的 patch 更新是不是不好做?

来源:2-5 图解为啥需要流量控制

香饽饽0

2023-04-29

因为比如有一个 结构体 Blog { title: string, content: string }
即使前端传递过来 title 没有传 content
go 这边接收时会用 零值去填充 content
没有办法去区分,用户是想更新 content 未空还是 只更新 title

写回答

1回答

好帮手慕小李

2025-02-18

1、确实恶心这肯定是没跑了。

2、倒是能实现,如下仅供参考:

  1. 使用指针:在Go中,可以通过使用指针来表示字段是否被更新。如果字段被更新,则对应的指针不为nil;如果未被更新,则为nil。这种方法可以明确区分字段是被显式设置为null还是未被更新。这种方法在处理部分更新时非常有用

  2. 客户端维护的FieldMask:另一种方法是在请求中新增一个FieldMask参数,用来说明需要更新的字段名称。这样,服务端可以根据FieldMask中的信息来确定哪些字段需要被更新,而忽略那些未被指定的字段。这种方法可以减少不必要的数据传输和处理,提高API的效率和灵活性

  3. 改用JSON Patch:JSON Patch是一种标准(RFC 6902),它允许对JSON文档进行部分更新。通过使用JSON Patch,您可以发送一个包含多个操作的数组,每个操作指定了要执行的具体更新。这种方式可以非常精确地控制资源的更新,但可能需要客户端和服务端都支持JSON Patch格式


0
0

(打造简历金牌项目)Vue+Go 开发企业级微服务网关项目

简历中摒弃烂大街的培训机构项目,带你开发企业级微服务网关

1316 学习 · 352 问题

查看课程