借这个课程的问答区问老师个问题,go 语言做 restful api 的 patch 更新是不是不好做?
来源:4-10 开发起一个计划总是遥遥无期,它总被一些非技术性的原因阻挠

香饽饽0
2023-04-29
因为比如有一个 结构体 Blog { title: string, content: string }
即使前端传递过来 title 没有传 content
go 这边接收时会用 零值去填充 content
没有办法去区分,用户是想更新 content 未空还是 只更新 title
写回答
1回答
-
在RESTful API中,PATCH方法用于对资源进行部分更新。在使用Go语言实现PATCH请求时,可能会遇到一些挑战,但并不代表它难以实现。主要的问题在于如何处理部分更新,这需要一种机制来识别和处理只传递了部分字段的请求。
以下是一个简单的例子:
type UpdateUserRequest struct { Name *string `json:"name"` Email *string `json:"email"` } func (h *Handler) UpdateUser(w http.ResponseWriter, r *http.Request) { var req UpdateUserRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } // ...load the existing user... if req.Name != nil { user.Name = *req.Name } if req.Email != nil { user.Email = *req.Email } // ...save the updated user... }
在这个例子中,我们定义了一个UpdateUserRequest结构体,其中的字段都是指针。这样,如果请求中没有提供某个字段,那么对应的指针就会是nil。在处理请求时,我们可以检查每个字段是否为nil,如果不是nil,就更新对应的字段。
这只是一个简单的例子,实际的情况可能会更复杂,例如需要处理嵌套的字段、需要进行数据验证等。所以,虽然实现PATCH请求可能需要更多的工作,但是Go语言完全可以处理这种情况。
012023-05-16
相似问题