Aller au contenu

API — Pays

Cette page documente CountryController, monté sous /api/countries. C'est le plus petit contrôleur de PerfShop — un unique endpoint public de référence.

Contrôleur couvert

CountryControllerGET /api/countries


GET /api/countries

Retourne la liste des pays supportés par PerfShop, triée avec la France en tête puis dans l'ordre alphabétique du libellé localisé. Cet endpoint alimente typiquement les listes déroulantes des formulaires d'adresse (profil utilisateur, checkout).

Auth : aucune Contrôleur : CountryController.getCountries() Service : ValidationService.getCountries() (i18n via I18nService)

Réponse — 200 OK

[
  { "code": "FR", "label": "France" },
  { "code": "DE", "label": "Allemagne" },
  { "code": "AR", "label": "Argentine" },
  { "code": "AU", "label": "Australie" },
  { "code": "AT", "label": "Autriche" },
  { "code": "BD", "label": "Bangladesh" },
  { "code": "BE", "label": "Belgique" },
  { "code": "BR", "label": "Brésil" }
]

La réponse est un tableau JSON brut (pas d'enveloppe). Chaque entrée contient :

Champ Description
code Code ISO 3166-1 alpha-2 (2 lettres majuscules)
label Libellé du pays dans la langue active du backend (PERFSHOP_LANG)

Règles de tri

Le tri est effectué côté serveur :

  1. France en premier — la clé FR est triée avec la valeur virtuelle "0" tandis que les autres pays utilisent "1" comme préfixe de tri.
  2. Alphabétique sur le libellé localisé pour tous les autres pays.

Ce tri stable garantit que l'ordre de la liste ne dépend que de la langue active, et que le pays par défaut (FR) est toujours accessible immédiatement en haut de la liste.

Liste fermée

La liste des pays supportés est codée en dur dans ValidationService — il n'y a pas d'API pour l'enrichir. Cette limitation est délibérée : elle garantit que chaque pays listé dispose d'une règle de validation postalCode et phone dans ValidationService. Ajouter un pays nécessite :

  1. Ajouter l'entrée dans ValidationService.getCountries()
  2. Ajouter la clé country.XX=Libellé dans messages_fr.properties et messages_en.properties
  3. Ajouter la règle de validation code postal dans ValidationService.validatePostalCode()
  4. Ajouter la règle de validation téléphone dans ValidationService.validatePhone()

Pays actuellement supportés

Les codes ISO suivants sont présents dans messages_fr.properties (clés country.*) :

Europe

FR (France), BE (Belgique), CH (Suisse), LU (Luxembourg), DE (Allemagne), GB (Royaume-Uni), NL (Pays-Bas), ES (Espagne), IT (Italie), PT (Portugal), IE (Irlande), AT (Autriche), SE (Suède), NO (Norvège), DK (Danemark), FI (Finlande), PL (Pologne), CZ (République tchèque), RO (Roumanie), HU (Hongrie), UA (Ukraine), RU (Russie)

Amériques

US (États-Unis), CA (Canada), MX (Mexique), BR (Brésil), AR (Argentine), CL (Chili), CO (Colombie)

Asie

IN (Inde), PK (Pakistan), BD (Bangladesh), JP (Japon), CN (Chine), KR (Corée du Sud), TW (Taïwan), HK (Hong Kong), SG (Singapour), MY (Malaisie), PH (Philippines), TH (Thaïlande), ID (Indonésie), VN (Viêt Nam)

Océanie

AU (Australie), NZ (Nouvelle-Zélande)

Moyen-Orient

AE (Émirats arabes unis), SA (Arabie Saoudite), IL (Israël), QA (Qatar), TR (Turquie)

Afrique

ZA (Afrique du Sud), MA (Maroc), TN (Tunisie), EG (Égypte), NG (Nigéria), KE (Kenya)

Total : 56 pays.


Chaos et sécurité

Aucun chaos ne s'applique à cet endpoint. Il est :

  • Toujours public
  • Toujours en lecture seule
  • Toujours retourné instantanément (pas d'appel base de données — la liste est construite en mémoire à partir des clés i18n chargées au démarrage)
  • Exclu des intercepteurs de chaos performance

C'est un endpoint « infrastructure » stable par construction — son rôle unique est d'être une source de vérité pour le frontend.


Exemple curl

curl http://localhost:9080/api/countries

Liens associés