【发布时间】:2021-04-21 06:15:51
【问题描述】:
在 .net 5 中使用 Web API 并在 rest 中符合 api 给我带来了一些挑战,即在不同控制器中拆分方法的程度和命名约定。
我已经读到,如果我的系统中有用户并且正在做一个休息架构,我的控制器将被命名为 UserController 并且获取用户的方法是:
[HttpGet("{id}")]
public string Get(int id)
{
return "value";
}
获取用户列表:
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
更新将是:
[HttpPut("{id}")]
public void Put(int id, [FromBody] string value)
{
}
Delete 会有一个 [HttpDelete],依此类推。 但是特殊情况呢?
-
如果我想要 GetUserByUsername 怎么办?那么它会在同一个 UserController 中并且只是以下内容,还是会破坏 REST 模式?:
[HttpGet("{用户名}")] 公共任务GetByUsername(字符串用户名) { }
-
如果我需要调用 api 获取一些数据来填充“createuser 页面”,假设我需要可以创建用户的角色和一些其他信息,并且希望在一次调用中完成。然后我可以在 UserController 中创建一个“InitCreateUser”而不破坏 REST 模式吗?
[HttpPost] 公共任务 InitCreateUser() { }
-
如果我需要 Login 和 Logout 方法怎么办,它会是 AutenticationController 并且只有两种方法:(它与其他模式相距甚远,因为它不被称为 Get() Post() 等等)
[HttpPost] 公共任务登录(LoginRequest 请求) { }
[HttpPost] 公共任务注销(LogoutRequest 请求) { }
【问题讨论】:
标签: rest asp.net-web-api