Les méthodes d'API Web sont appelées via HTTP. L'appel d'un service d'API Web nécessite donc qu'il soit hébergé quelque part et appelé à l'aide d'un client approprié, comme indiqué en @David's link. Vous pouvezself-host Web API, donc en théorie vous pourriez avoir un assembly local à une application MVC qui contenait une classe qui a mis en place, puis appelé un service API Web auto-hébergé.
Vous injecterait le service Web API derrière une interface, quelque chose comme ceci:
public interface IProductsService
{
IEnumerable<Product> GetAllProducts();
}
... mis en œuvre quelque chose comme ceci:
public class SelfHostedWebApiProductsService
{
public SelfHostedWebApiProductsService()
{
// Set up a self-hosted Web API service
}
public IEnumerable<Product> GetAllProducts()
{
// Call your self-hosted WebApi to get the products
}
}
Configure your DI container à utiliser SelfHostedWebApiProductsService
pour l'interface IProductsService
, et c'est parti. This article explique comment configurer et appeler une API Web auto-hébergée. Comme le SelfHostedWebApiProductsService
configure l'API Web auto-hébergée dans son constructeur - une opération relativement coûteuse - vous pourriez envisager de donner à cette classe une durée de vie singleton dans votre conteneur DI.
Google semble fonctionner très bien: http://www.asp.net/web-api/overview/web-api-clients/call-a-web-api-from-a-net-client – David
Peut-être que vous voulez juste garder vos contrôleurs mvc asp.net et contrôleurs webapi à part? Ensuite, cochez ceci: http://stackoverflow.com/questions/10677745/mixing-web-api-and-asp-net-mvc-pages-in-one-project – AardVark71