我有两个这样的方法
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 .我希望调用第一个方法,而不是第二个方法。
我该怎么做?
最佳答案
您需要唯一的 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 的集合进行操作(获取所有),而 ProductController 负责对 T 进行操作(例如获取特定集合)。
关于wcf-web-api - ASP.NET Web API 绑定(bind)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9325735/