返回不同模型的控制器方法

时间:2018-10-07 11:10:45

标签: c# rest api web controller

我正在创建REST API,所以我正在创建控制器。

我有一个这样的实体:

public class User
{
    public int Id { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public int Age { get; set; }
    public string PersonalInformation { get; set; }
}

在前端,我有2个视图,需要两种不同的User模型。

管理员可以检查用户的个人信息,他需要查看除密码之外的所有信息。

用户con修改了他的所有信息,因此他将需要查看他的所有信息。

另一种观点是仅显示用户UsernamePersonalInformation,并且管理员和用户都可以要求输入。

在这种情况下,我将需要三种不同的模型发送到前端。

要访问此信息,我的控制器将提供一种方法:

[HttpGet("{id}")]
public IActionResult Get(int id)
{
    ....
}

这是我的问题,因为我有相同的方法来返回两个不同的模型(将来可能会更多)。在研究Web API设计时,我读到要访问的关键字可能不是动词。一种方法url是/ users / 1,但是其他方法必须不同,这就是我的问题。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以创建两个不同的dto(数据传输对象)。只有两个简单的类,例如您的用户和您想要的数据。 我不知道您的授权方式,但是当管理员调用api时,您返回Ok(dto),而当用户调用Ok(dtoWithPassword)时。

并确保密码是经过哈希处理的。