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

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

我正在创建一个 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 个视图,需要两个不同的用户模型。

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

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

另一种视图是仅向用户显示

Username
PersonalInformation
,管理员和用户都可能会要求。

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

要访问此信息,我的控制器将有一个方法:

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

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

谢谢!

c# rest controller webapi
1个回答
1
投票

您可以创建两个不同的dto(数据传输对象)。只需两个简单的类,就像您的用户一样,其中包含您想要的数据。 我不知道你是如何进行授权的,但是当管理员调用 api 时,你返回 Ok(dto),当用户调用 Ok(dtoWithPassword) 时。

并确保密码经过哈希处理和加盐处理。

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