我有两个这样的方法
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。我希望调用第一个方法,而不是第二个方法。
我该怎么做?
答案 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的操作(比如获取特定的)。