我们的用户请求和响应模型应该相同吗?

时间:2018-05-11 13:12:43

标签: c# asp.net-web-api

作为一个优秀的API编写实践,我们应该使用单独或共同的请求和响应模型吗?

实施例。

public abstract class BaseModel 
{

    public DateTime CreatedOn {get;set;} 

    public int CreatedOn {get;set;} 

}

public class UserModel : BaseModel
{

    public int UserId {get;set;}

    public string UserName{get;set;}

    public string FirstName { get; set; }

    public string MiddleName { get; set; }

    public string LastName { get; set; }

    string _name;

    public string Name
    {

        get { return string.Format("{0}{1}{2}", FirstName, MiddleName, LastName) }

        set { _name=value; }        
    }
}

现在,如果我正在创建API

CreateUser(UserModel uModel)
{
}

GetUsers()
{    
    // Here I'm returning all users from the system, so each user's object will contains CreatedOn and CreatedBy, which I don't require in the API response    
}

那么我们应该创建多个UserModel吗?

1 个答案:

答案 0 :(得分:0)

如果您的响应格式是json,则一种解决方案是使用[ScriptIgnore]注释,以便:

 public abstract class BaseModel
{
    [ScriptIgnore]
    public DateTime CreatedOn { get; set; }
    [ScriptIgnore]
    public int CreatedOn2 { get; set; }

}

这样您就可以使用公共类而不为api序列化不需要的字段。