ASP.NET -Web -API -Bindungsmethode
-
27-10-2019 - |
Frage
Ich habe zwei Methoden wie diese
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;
}
}
Wenn ich URL anrufe: Holen Sie sich http: // localhost/api/produkt/1 . Ich möchte, dass die erste Methode aufgerufen wird, nicht die zweite Methode.
Wie kann ich das machen ?
Lösung
Sie brauchen einzigartige URIs. Sie können Ihre Route ändern, um dies zu erhalten:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Jetzt können Sie wie folgt auf Ihre API zugreifen:
http: // localhost/api/produkt/getProductbyId/1
http: // localhost/api/produkt/getProduct/1
Ich habe ein wenig geschrieben Einführung in die ASP.NET -Web -API Dies zeigt einige der Unterschiede zur WCF -Web -API.
Sie können auch eine Standardaktion hinzufügen, z. B. die Listen aller Produkte, damit Sie so etwas tun können:
http://localhost/api/product/ // returns the list without specifying the method
und der andere wird auf diese Weise angerufen
http://localhost/api/product/byid/1 // returns the list without specifying the method
Ich habe einen ProductsController und einen ProductController. ProductsController ist für den Betrieb bei Sammlungen von T (GET All) verantwortlich und ProductController ist für den Betrieb von T (wie das Erhalten einer bestimmten) verantwortlich.