我们应该使用不同的结构体来请求和响应吗?

问题描述 投票:0回答:1

我之前没有后端经验,我开始从事一个新项目。我检查了许多存储库以获取灵感,我发现其中一半使用相同的结构来请求和响应,一半使用单独的结构。

有正确的方法吗?在前端我们通常使用不同的对象来请求和响应,但是后端呢?

例如:

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"`
}

将用作响应对象。

有两个单独的结构用于请求和响应是有意义的,因为它们具有不同的字段。或者我们应该只使用一个并只填充我们需要的字段?

如果它们有相同的字段怎么办?

go backend
1个回答
0
投票

你可以使用的是组合:

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)作为前提条件)。

© www.soinside.com 2019 - 2024. All rights reserved.