Fecshop, un système de commerce électronique open source basé sur Yii2, adopte une architecture découplée entre le front-end et le back-end. Le point d'entrée Appserver constitue le pilier de cette séparation, spécifiquement conçu pour traiter les requêtes API des applications mobiles et des interfaces clients légers. Cet article explore en profondeur l'architecture de l'Appserver et détaille le processus de développement complet.
Principes fondamentaux de l'Appserver Fecshop
L'Appserver est un module dédié aux services API pour les applications mobiles, les mini-programmes et les pages H5. Il s'écarte du modèle MVC classique pour implémenter une conception d'API RESTful, fournissant des points de terminaison normalisés pour l'échange de données.
Ses caractéristiques principales incluent :
- Support complet des API RESTful
- Mécanisme d'authentification par Jeton JWT
- Gestion des requêtes inter-domaines (CORS)
- Retour de données au format JSON uniforme
Analyse de l'architecture du module
Structure de configuration centrale
La configuration du module réside dans app/appserver/config/appserver.php. Ce fichier centralise les paramètres essentiels tels que l'enregistrement des sous-modules, les préférences linguistiques, l'authentification utilisateur et le routage des URL.
$parametres = [
'modules' => $listeModules,
'bootstrap' => ['store'],
'params' => [
'nomApp' => 'appserver'
],
'components' => [
'i18n' => [...],
'user' => [...],
'urlManager' => [...]
]
];
Hiérarchie des contrôleurs
Tous les contrôleurs de l'Appserver héritent d'une classe de base, elle-même dérivée de RestController de Yii2. Cette classe fournit un mécanisme unifié pour le traitement des requêtes API :
- Authentification automatique via un jeton d'accès (access-token)
- Support intégré pour les requêtes CORS
- Format de réponse JSON standardisé
Conception modulaire
L'Appserver est structuré autour de modules métier indépendants :
- Module Catalogue : Gestion des produits et des catégories
- Module Client : Inscription, connexion et gestion de compte
- Module Commande : Panier d'achat et processus de commande
- Module Paiement : Intégration des passerelles de paiement
- Module CMS : Système de gestion de contenu
Processus de développement complet
1. Mise en place de l'environnement
Commencez par cloner le dépôt du projet et installer les dépendances requises via Composer :
git clone https://gitcode.com/gh_mirrors/yii/yii2_fecshop
cd yii2_fecshop
composer install
2. Configuration du point d'entrée Appserver
Définissez les paramètres de base dans le fichier de configuration principal, y compris l'enregistrement des modules, les paramètres régionaux et la méthode d'authentification.
3. Implémentation des points de terminaison API
Pour créer un endpoint, par exemple pour la connexion utilisateur, on développe un contrôleur dans le module correspondant :
class LoginController extends BaseAppserverController
{
public function actionAuthentifier()
{
// Logique de traitement de l'authentification
$reponse = $this->getService()->traiterDemande();
return $reponse->genererSortie();
}
}
4. Séparation de la logique métier
La logique complexe est encapsulée dans des services dédiés, maintenant les contrôleurs légers :
class ServiceAuthentification extends \yii\base\BaseObject
{
public function traiterDemande()
{
// Logique métier et traitement des données
return new ReponseApi(['statut' => 'succes', 'code' => 200]);
}
}
5. Validation et déploiement
Testez les API à l'aide d'outils comme Postman pour vérifier le format des réponses, puis déployez l'application dans un environnement de production.
Implémentations techniques clés
1. Mécanisme d'authentification JWT
L'Appserver utilise des jetons JWT pour une authentification sans état :
- Génération et validation des jetons
- Mécanisme de renouvellement automatique
- Sécurisation des transmissions
2. Gestion des requêtes inter-domaines
Un filtre CORS intégré permet de gérer les requêtes provenant d'autres domaines :
$comportements["filtreCORS"] = [
'class' => \yii\filters\Cors::className(),
'cors' => Yii::$service->helper->appserver->obtenirConfigCors(),
];
3. Standardisation des réponses d'erreur
La configuration d'un gestionnaire d'erreurs centralisé assure que toutes les exceptions sont renvoyées au format JSON standardisé.
Recommandasions et optimisations
Organisation du code
- Les contrôleurs ne gèrent que le routage des requêtes et la formulation des réponses
- La logique métier est déléguée aux services
- Les modèles de données conservent leur indépendance
Mesures de sécurité
- Validation et filtrage des données entrantes
- Protection contre les injections SQL
- Prévention des attaques XSS
Cas d'application pratiques
L'Appserver Fecshop s'intègre avec diverses technologies front-end :
- Applications mobiles natives : React Native, Flutter
- Mini-programmes WeChat : Développement natif
- Applications web dynamiques : Vue.js, React
- Applications de bureau : Electron