具有多个post方法的Web api控制器,具有相同的名称但具有不同的参数

时间:2015-04-17 06:14:50

标签: http-post asp.net-web-api

我的web api控制器有多个post方法,名称相同但参数不同;当我运行应用程序时,我收到一个错误: - 找到了符合请求的多项操作 注意: - 我不想使用Action Routing,因为我想统一使用我的网络API的客户

public Customer Post(Customer customer)
{

}

public Product Post(Product product)
{

}

2 个答案:

答案 0 :(得分:2)

问题是,根据传递给web api的URL,无法区分这两种Post方法。

处理此问题的方法是使用单独的控制器。一个控制器将是“api / Customer”,并且具有接收客户的Post方法:

public class CustomerController : ApiController
{
    public Customer Post(Customer customer) { }
}

另一个是“api / Product”并采取产品:

public class ProductController : ApiController
{
    public Product Post(Product product) { }
}

如果你真的真的想将两者都传递到一个控制器中,你可以创建一个具有Customer和Product的所有属性的类,然后查看属性以找出传递给控制器​​的内容。但是......哎呀。

public class EvilController : ApiController
{
    public ProductOrCustomer Post(ProductOrCustomer whoKnows)
    {
        // Do stuff to figure out if whoKnows has
        // Product properties or Customer properties
    }
}

答案 1 :(得分:0)

您可以使用单个控制器,使用单个方法获取两个类都实现的接口类型的参数。然后根据运行时类型调用私有处理程序。

相关问题