2015-09-04 100 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名和密碼信息。如果我想更改帳戶信息怎麼辦?關於用戶信息呢?這是兩個獨立的原因。

所以,我肯定會創建一個封裝特定問題的單獨模型。