【发布时间】:2019-03-12 06:38:33
【问题描述】:
我正在创建一个 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,但其他的必须不同,我的问题来了。
谢谢!
【问题讨论】:
-
您正在描述三个不同的端点,每个端点都有不同的资源(您可以称它们为 DTO 或模型)。那你为什么不创建三个不同的路线呢?
/users/current、/users/{id}和/personalinfo/{id}? -
根本不是一个好主意...然后管理员可以调用用户端点。这不安全......
标签: c# rest api web controller