• laurent@lioncoding.com

A la découverte de RESTCountries.NET


👉 https://medium.com/@lioncoding English Post here.

Dans cet article, je vous présente ma seconde librairie open source développée en .NET Standard et disponible sur la plateforme https://nuget.org: RESTCountries.NET.

RESTCountries.NET est une librairie consommant les web services fournis par REST Countries (https://restcountries.eu). Pour information, https://restcountries.eu est une plateforme open source également qui met à disposition des développeurs, des données sur chaque pays du monde à travers une API REST; des données telles que:

  • Le nom original du pays;
  • La traduction du nom en d’autres langues telles que le Français, l’Allemand, l’Italien, l’Espagnol, le Portugais,etc.
  • La capitale;
  • La superficie;
  • La population;
  • Les pays limitrophes;
  • La devise du pays;
  • Le continent dans lequel se trouve le pays;
  • Les organisations sous-régionales auxquelles appartient le pays;
  • etc.

Je vous ai mis en place la couche d’accès à l’API de REST Countries via de simples méthodes asynchrones que je vous présenterai plus bas, ce qui vous évite d’aller vous documenter sur https://restcountries.eu et de concevoir une couche service de consommation de ses web services.

Sujet

J’avais besoin de produire un formulaire en Xamarin.Forms sur lequel se trouvait un Picker qui doit contenir la liste de tous les pays du monde(Le nom des pays devait être en Français). Chercher la liste de tous ces pays, créer une classe et remplir un objet List de pays m’a donné de la paresse 🙈. C’est la raison principale pour laquelle j’ai eu à travailler sur ce projet.

Il faut aussi noter que avoir des informations sur tous les pays du monde est un atout de culture générale; une application mobile Xamarin de culture générale peut donc être mise en place en se basant sur RESTCountries.NET.

Installation de RESTcountries.NET

RESTCountries.NET est un projet netstandard 2.0 disponible sur la plateforme nuget.org sous licence MIT. Son code source est d’ailleurs sur Github.

Il peut donc être installé dans les projets .NET tels que Xamarin, .Net Core, .NET Standard, etc.

Utilisation

Ajoutez le namespace RESTCountries.Services à la classe qui fera appel aux méthodes de la librairie.

Chaque méthode que nous découvrirons, renverra un objet de type Country ou une liste d’objets de type Country.

  • [x] Récupérons la liste des pays
// Get all countries
List<Country> countries = await RESTCountriesAPI.GetAllCountriesAsync();
  • [x] Recherche par nom de pays ou par nom partiel
// Search by country name
List<Country> result = await RESTCountriesAPI.GetCountriesByNameContainsAsync(string name);

Si la valeur du paramètre name se retrouve dans le nom de plusieurs pays, la méthode GetCountriesByNameContainsAsync retournera la liste de ces pays. Sinon, une liste contenant un seul pays d’où l’usage de la méthode GetCountryByFullNameAsync est à privilégier.

  • [x] Recherche par nom complet
// Search by country full name
Country result = await RESTCountriesAPI.GetCountryByFullNameAsync(string fullName);
  • [x] Recherche par code ISO 3166-1
// Search by list of ISO 3166-1 2-letter or 3-letter country codes
Country result = await RESTCountriesAPI.GetCountryByCodeAsync(string countryCode);
  • [x] Recherche par capitale
// Search by capital city
var result = await RESTCountriesAPI.GetCountryByCapitalCityAsync(string capitalCity);
  • [x] Recherche des pays par continent: Africa, Americas, Asia, Europe, Oceania
//  Search by continent: Africa, Americas, Asia, Europe, Oceania
List<Country> result = await RESTCountriesAPI.GetCountriesByContinentAsync(string continent);
  • [x] Recherche par organisation sous-régionale: EU, EFTA, CARICOM, AU, USAN, EEU, AL, ASEAN , CAIS, CEFTA , NAFTA , SAARC
//  Search by regional bloc
List<Country> result = await RESTCountriesAPI.GetCountriesByRegionalBlocAsync(string regionalBloc)

Par défaut, le nom des pays est en Anglais, nous pouvons alors appliquer des filtres pour l’obtenir dans d’autres langues:

  • [x] La liste des noms de pays en Espagnol
// Get all countries in Spanish language
var countries = await RESTCountriesAPI.GetAllCountriesAsync();
List<string> countriesInSpanish = countries.Select(c => c.Translations.Es).ToList()
  • [x] La liste des pays du continent européen
// Get Europe countries in French language
var europeCountries = await RESTCountriesAPI.GetCountriesByContinentAsync("Europe"); ;
List<string> europeCountriesInFrench = europeCountries.Select(c => c.Translations.Fr).ToList();

Pour plus de détails, visitez le projet sur Github.

Cet article est également disponible en Anglais sur Medium.


Commentaires