ASP.NET Web API绑定方法

时间:2012-02-17 09:27:30

标签: wcf-web-api asp.net-mvc-4 asp.net-web-api

我有两个这样的方法

public class ProductController : ApiController
{
    public Product GetProductById(int id)
    {
        var product = ... //get product
        return product;
    }

    public Product GetProduct(int id)
    {
        var product = ... //get product
        return product;
    }
}

当我调用url时:GET http://localhost/api/product/1。我希望调用第一个方法,而不是第二个方法。
我该怎么做?

1 个答案:

答案 0 :(得分:4)

您需要唯一的URI。您可以修改路线以获取此信息:

routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional }

);

现在您可以像这样访问您的API:

http://localhost/api/product/GetProductById/1

http://localhost/api/product/GetProduct/1

我写了一些introduction to ASP.NET Web API,它显示了与WCF Web API的一些差异。

您还可以添加默认操作,例如列出所有产品的那个,所以你可以做这样的事情:

http://localhost/api/product/  // returns the list without specifying the method

,另一个以这种方式调用

http://localhost/api/product/byid/1  // returns the list without specifying the method

我所做的是拥有ProductsController和ProductController。 ProductsController负责对T的集合(get all)进行操作,ProductController负责对T的操作(比如获取特定的)。