我之前没有后端经验,我开始从事一个新项目。我检查了许多存储库以获取灵感,我发现其中一半使用相同的结构来请求和响应,一半使用单独的结构。
有正确的方法吗?在前端我们通常使用不同的对象来请求和响应,但是后端呢?
例如:
package domain
type SignIn struct {
Email string `json:"email"`
Password string `json:"password"`
}
将用作请求对象,并且
package domain
type SignInResponse struct {
Email string `json:"email"`
UID string `json:"UID"`
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token"`
}
将用作响应对象。
有两个单独的结构用于请求和响应是有意义的,因为它们具有不同的字段。或者我们应该只使用一个并只填充我们需要的字段?
如果它们有相同的字段怎么办?
你可以使用的是组合:
type SignIn struct {
Email string `json:"email"`
Password string `json:"password"`
}
type SignInResponse struct {
SignIn
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token"`
}
当然,
SignIn
这个名字已经没有多大意义了。
不过,我会选择重复的、独立的
structs
:它提供了清晰度(请求逻辑与响应逻辑分离),根据我的经验,在进一步的开发中事情变得越复杂,你的组合就越多。 b/c 的事情不再像开始时那样匹配。
我认为组合在以下情况下是一个好主意:1)你想要明确某些
structs
共享某些逻辑关系,或者2)你想要使用“共享”方法接收器(应该有1)作为前提条件)。