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
CountryController → GET /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 :
- France en premier — la clé
FRest triée avec la valeur virtuelle"0"tandis que les autres pays utilisent"1"comme préfixe de tri. - 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 :
- Ajouter l'entrée dans
ValidationService.getCountries() - Ajouter la clé
country.XX=Libellédansmessages_fr.propertiesetmessages_en.properties - Ajouter la règle de validation code postal dans
ValidationService.validatePostalCode() - 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¶
Liens associés¶
- auth.md —
PUT /api/auth/me— utilisation du champcountry - orders.md —
POST /api/checkout/address— validation du pays à la livraison - Internationalisation — mécanisme
I18nServiceet cléscountry.*