我正在创建一个API,其中有两个方法。第一个是Register方法:
[HttpPost("register")]
public async Task<ActionResult<User>> Register(UserDto request)
{
// User validation
}
第二种是Login方法:
[HttpPost("login")]
public async Task<ActionResult<User>> Login(UserDto request)
{
// User validation
}
下面是我的DTO类:
public class UserDto
{
public string Username { get; set; } = string.Empty;
public string Password { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public string Lastname { get; set; } = string.Empty;
public string PhoneNumber { get; set; } = string.Empty;
}
主要问题是我需要每个方法的不同属性。在REGISTRATION方法中,我需要所有字段:用户名,密码,姓名,姓氏,电话号码)。而在LOGIN方法中,我只需要用户名和密码字段。
我担心在方法之间使用相同的DTO类会导致系统漏洞(这是可行的,但可能会暴露不需要的额外字段)。我是否需要创建另一个DTO类,其中只包含每个方法所需的字段?是否有其他方法可以实现这一点?
1条答案
按热度按时间knpiaxh11#
可以使用的另一种方法是将公共属性移动到基类,然后在需要时继承基类。对于示例,可以将UserName和Password移动到基类。
但是,除非绝对必要,否则最好避免在DTO中使用继承。如果确实需要使用继承,请尽量使基类保持简单,以便任何更改都不会对派生类产生太大影响