3

我有两种这样的方法

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。我希望调用第一种方法,而不是第二种方法。
我怎样才能做到这一点 ?

4

1 回答 1

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

我已经写了一点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 的集合进行操作(获取所有),而 ProductController 负责对 T 的操作(例如获取特定的集合)。

于 2012-02-17T12:29:41.200 回答