Dans l’utilisation d’une API, vous pouvez intercepter une requête entrante afin de lire les infos de la requête (Exemple : les headers, …). Vous pouvez également intercepter le message de retour.
Ce traitement se fera avant et après l’appel du contrôleur. Exemple d’utilisation : Vérification du token reçu en header et envoi d’un nouveau token dans le header de la réponse.
Pour ce faire, vous allez devoir mettre en place votre propre DelegatingHandler
/// <summary> /// Objet pour gérer l'entrée et la sortie des requetes /// </summary> public class ResponseHandler : DelegatingHandler { /// <summary> /// Surchage de la méthode pour intercepter les requêtes /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { // point central pour intercepter les requêtes entrantes //Lecture du header pour récupérer le token return base.SendAsync(request, cancellationToken) .ContinueWith(task => { //Point central pour intercepter les requêtes sortantes //Ajout du token dans la reponse return response; }); } |
Une fois cet handler créé, il faut signaler que vous désirez l’utiliser. Cela passe par le Global.asax.cs. Dans la méthode Application_Start() ajoutez.
GlobalConfiguration.Configuration.MessageHandlers.Add(new ResponseHandler()); |