Asp.net web api 在web api.NET中引用视图模型

Asp.net web api 在web api.NET中引用视图模型,asp.net-web-api,Asp.net Web Api,我目前正在.NET中开发web api。基本上,我想知道web api接受域类,然后在api控制器中引用视图模型是否有效 我个人认为这是不正确的,因为域类应该只被接受,因为web api不应该知道关于视图模型类的任何信息 代码示例如下所示: 我使用了瘦控制器的方法,因此实现了一个execute方法,它将完成所有的处理,在下面的例子中,它将添加到存储库中 public HttpResponseMessage Put(Staff staffMember) { command

我目前正在.NET中开发web api。基本上,我想知道web api接受域类,然后在api控制器中引用视图模型是否有效

我个人认为这是不正确的,因为域类应该只被接受,因为web api不应该知道关于视图模型类的任何信息

代码示例如下所示:

我使用了瘦控制器的方法,因此实现了一个execute方法,它将完成所有的处理,在下面的例子中,它将添加到存储库中

 public HttpResponseMessage Put(Staff staffMember)
    {
        command.Execute(new StaffVM { Staff = staffMember }, ModelState);

        return Request.CreateResponse(HttpStatusCode.OK, staffMember.name);            
    }

这是一种好方法吗?

当API Put方法收到Put请求时,默认模型绑定器将尝试将传入请求属性映射到模型中的属性。如果重新使用MVC控制器模型符合映射要求,那么我认为这是一种可以接受的方法

这里唯一需要考虑的是,目前Api Put方法和使用
Staff
的其他控制器方法的要求是一致的,但是如果原始控制器的要求发生变化,从而导致模型发生变化,则可能会破坏Api方法,映射可能会失败


另一方面,如果将来API控制器的需求意味着不再使用
Staff
模型,那么您可以适当地替换API方法签名。

在您的示例中从不使用staffMember(应该是Staff=staffMember吗?-但是StaffVM只是一个包装类?)我更改了对象名称,因为我不想显示真实名称。我想我只是想澄清在api控制器中使用视图模型是否有效?