.Net Framework : Gérer vos exceptions HTTP

Lorsque vous faites appel à un API dans votre code en .Net, vous risquez d’obtenir un retour différent d’un code 2xx. Parfois parce que l’API est momentanément indisponible, parfois pour un problème réseau (Timeout), ou pour tout autres raisons.

Dans certains cas (Notamment en cas d’un timeout), il suffit de rejouer l’appel à l’API pour que cela fonctionne. Il est bien sûr possible de mettre en place cette gestion d’erreur avec une boucle For qui tenterait d’appeler l’API x fois, mais heureusement pour nous, il existe une manière bien plus jolie de le faire.

Install-Package Polly

Polly est une bibliothèque de gestion d’incidents qui permet de mettre en place différentes stratégies de manière fluide. Dans notre cas, nous allons simplement appeler x fois l’API en cas d’exception lors de l’appel à celle-ci.

return await Policy.Handle<Exception>()
    .WaitAndRetryAsync(Enumerable.Range(1, 5).Select(item => TimeSpan.FromSeconds(3)))
    .ExecuteAsync(async () =>
    {
        var response = await _httpClient.GetAsync("api/Topics");
        _topicViewModels = JsonConvert.DeserializeObject<IEnumerable<TopicViewModel>>(await response.Content.ReadAsStringAsync());

        return _topicViewModels;
    });

Dans l’exemple ci-dessus, en cas d’exception lors de l’appel à l’API, nous allons tenter de la rappeler à 5 reprises à 3 secondes d’intervalle. Avouons-le, c’est bien plus propre qu’une boucle For.

La librairie Polly est également disponible pour .Net Core et permet d’autres stratégies que celle de réessayer. Je vous invite à parcourir la documentation sur GitHub pour plus d’informations.

You may also like...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *