2015-09-04 99 views
0

我刚开始学习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发出请求。 感谢名单

回答

0

我能想到的SOLID原则#1适用于您的情况:

  1. 单一职责:应该只有一个改变类的理由。

如果你坚持用Account名和密码信息。如果我想更改帐户信息怎么办?关于用户信息呢?这是两个独立的原因。

所以,我肯定会创建一个封装特定问题的单独模型。