建模RESTful API
问题描述:
我刚开始学习webapi并试图实现一个RESTful API。我的问题是如何建模。我有一个帐户模型:建模RESTful API
public class Account: EntityBase<string>
{
[JsonProperty("_rev")]
public string Revision { get; set; }
[JsonProperty("type")]
public string Type { get; set; } = "account";
[JsonProperty("firstname")]
public string Firstname { get; set; }
[JsonProperty("lastname")]
public string Lastname { get; set; }
[JsonProperty("email")]
public string Email { get; set; }
public string Password { get; set; }
[JsonProperty("role")]
public string Role { get; set; }
[JsonProperty("password")]
public string PasswordHash { get; set; }
[JsonProperty("salt")]
public string Salt { get; set; }
}
和帐户控制器。我想注册一个帐号:
//POST api/Accounts/Register
[HttpPost]
public IHttpActionResult Register([FromBody]Account account)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var result = accountsService.RegisterAccount(account);
return Ok(result);
}
和登录:
//POST api/Accounts/Login
[HttpPost]
public IHttpActionResult Login([FromBody]Account account)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var result = accountsService.LoginAccount(account);
return Ok(result);
}
我的问题是,我得把两个POST请求到相同的控制器使用相同的参数(该帐户模型)。它是否正确?我是否需要制作另一个模型(例如用户模型)并使用另一个控制器进行登录?
PS我使用Angular向api发出请求。 感谢名单
答
我能想到的SOLID原则#1适用于您的情况:
- 单一职责:应该只有一个改变类的理由。
如果你坚持用Account
名和密码信息。如果我想更改帐户信息怎么办?关于用户信息呢?这是两个独立的原因。
所以,我肯定会创建一个封装特定问题的单独模型。