通用Web API控制器

我正在使用Web API v2,我有一些模型,我需要做CRUD操作。 例如,我有一个Allergy模型和一个Prescription模型。 在应用程序本身中,我有可以转换为适当模型的视图模型,但为了简单起见,我只想说我在Web API控制器中直接使用模型。

所以这样的事情:

  public class PrescriptionsController { public HttpResponseMessage Put(Prescription model) { // saved to the DB } ... (other CRUD operations) } 

我对Allergy模型也有同样的Allergy

  public class AllergiesController { public HttpResponseMessage Put(Allergy model) { // saved to the DB } ... (other CRUD operations) } 

两种型号都有不同的属性,但处理方式完全相同 – 实际上我有大约3种其他型号,每种型号的处理方式完全相同。 我讨厌有5个不同的端点,基本上是复制和粘贴代码。

所以我的问题是:

我可以制作一个通用控制器来处理所有这些模型吗? 像MyCommonController这样的东西? (但当然有更好的名称!)Web API可以处理该场景中的路由吗? 这是一个好主意吗?

最后我没有尝试通用控制器。 似乎有可能通过路由跳过一些箍。

然而,路由修改以使其工作的事实是如此复杂,这种做法否定了我将获得的好处。 我想保持简单。 所以我只是创建了一个通用基类:

 class MyBaseController : ApiController { public TModel Get(int id) { ... } } 

并且每种类型都inheritance自它:

 class PrescriptionsController : MyBaseController { } 

这就像魅力一样,不必乱用路由或任何东西。 它清楚地表明正在发生的事情并且非常易于维护。