ASP.NET Web API metodo di rilegatura
-
27-10-2019 - |
Domanda
Ho due metodi come questo
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;
}
}
Quando chiamo url: GET http: // localhost / api / prodotto / 1 . Voglio che il primo metodo viene richiamato, non il secondo metodo.
Come posso fare questo?
Soluzione
È necessario URI unici. È possibile modificare il percorso per arrivare a questo:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Ora è possibile accedere alla API in questo modo:
http: // localhost / api / prodotto / GetProductById / 1
http: // localhost / api / prodotto / EsprProdotto / 1
ho scritto un po ' introduzione ad ASP.NET Web API che mostra alcune delle differenze a WCF Web API.
È inoltre possibile aggiungere un'azione predefinita, ad esempio, l'uno gli elenchi di tutti i prodotti in modo da poter fare qualcosa di simile:
http://localhost/api/product/ // returns the list without specifying the method
e l'altro viene richiamato in questo modo
http://localhost/api/product/byid/1 // returns the list without specifying the method
quello che faccio è avere un ProductsController e ProductController. ProductsController è responsabile delle operazioni su collezioni di T (ottenere tutto) e ProductController è responsabile per le operazioni su T (come avere uno specifico).