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 ?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top