Метод связывания веб -API ASP.NET
-
27-10-2019 - |
Вопрос
У меня есть два подобных метода
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: Получите 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
Я написал немного Введение в веб -API ASP.net который показывает некоторые различия в 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
Что я делаю, так это наличие продуктов Controller и ProductController. ProductsController отвечает за операции по коллекциям T (Get All), а ProductController отвечает за операции на T (например, получение конкретной).