


PHP et Lumen s'intègrent pour réaliser le développement d'une architecture de microservices
Avec le développement rapide de la technologie informatique, les entreprises modernes sont confrontées à des systèmes d'entreprise de plus en plus complexes. L'architecture traditionnelle à application unique ne peut plus répondre aux besoins, et l'architecture des microservices a émergé au fur et à mesure que le temps l'exige. L'architecture des microservices est un style architectural dans lequel les applications sont composées de plusieurs petits services qui peuvent être déployés, exécutés, étendus et maintenus indépendamment pour obtenir une meilleure évolutivité, réutilisation et flexibilité.
Alors, comment utiliser PHP pour implémenter une architecture de microservices ? La réponse est d'utiliser Lumen - un framework PHP léger. Basé sur Laravel, Lumen est un framework PHP conçu pour créer des microservices et des API. Cet article expliquera comment intégrer l'architecture de microservices dans le framework Lumen.
Première étape : installer Lumen
Tout d'abord, nous devons installer le framework Lumen localement. Les étapes d'installation sont les mêmes que pour Laravel. Il peut être installé via Composer, comme indiqué ci-dessous :
composer create-project --prefer-dist laravel/lumen lumen_api
Une fois terminé, nous pouvons démarrer l'environnement d'exécution du framework Lumen localement :
php -S localhost:8000 -t public
Quand "Le serveur de développement Lumen a démarré : < ;http://localhost:8000>", cela signifie que le framework Lumen a déployé avec succès l'environnement d'exécution local et que nous pouvons accéder à sa page par défaut via http://localhost:8000.
Étape 2 : Écrire des microservices
Ensuite, nous utiliserons le framework Lumen pour écrire notre premier microservice. Nous allons créer une API simple qui obtient une liste de tous les utilisateurs. Les étapes pour implémenter cette API sont les suivantes :
- Créer une route API
Dans le fichier de routage routes/web.php, nous devons écrivez une route pour gérer les requêtes vers l'API. Dans cet exemple, nous allons écrire une route GET dans le fichier de route pour gérer les requêtes /get_users, comme indiqué ci-dessous :
$router->get('/get_users', function () use ($router) { return 'List of all users'; });
À ce stade, lorsque vous demanderez http://localhost:8000/ get_users renvoie la chaîne "Liste de tous les utilisateurs".
- Gestion des requêtes API
Maintenant, nous devons créer une classe de contrôleur pour notre API. Créons la classe UserController qui sera chargée de gérer la requête get_users et de renvoyer la liste des utilisateurs. Nous pouvons créer le fichier UserController.php dans le répertoire app/Http/Controllers et y copier le code suivant :
<?php namespace AppHttpControllers; use IlluminateHttpRequest; class UserController extends Controller { public function getAllUsers() { $users = ['User 1', 'User 2', 'User 3']; return response()->json($users); } }
Dans le code ci-dessus, nous définissons une fonction publique getAllUsers(), qui La fonction renverra une liste de tous les utilisateurs en réponse au format JSON.
- Enregistrer le routage API vers le contrôleur
Maintenant, nous devons enregistrer le routage API vers le contrôleur UserController dans le fichier de routage, ajouter notre route / api/get_users est mappé à la méthode UserController@getAllUsers, et le fichier de route est modifié comme suit :
$router->get('api/get_users', 'UserController@getAllUsers');
À ce moment, lorsque vous demandez http://localhost:8000/api/get_users, un JSON sera renvoyé La liste des utilisateurs au format, comme indiqué ci-dessous :
{ "0": "User 1", "1": "User 2", "2": "User 3" }
Enfin, nous devons également importer la classe UserController en haut, comme indiqué ci-dessous :
<?php use AppHttpControllersUserController;
- Domain Design
- Inscription des utilisateursAuthentification des utilisateurs
- #🎜🎜 # UserAuthorization
- User Information Management Maintenant, nous devons mapper ces fonctions à l'interface du microservice.
- Nous concevrons différentes interfaces de microservice en fonction des différentes fonctions du modèle de domaine. Nous allons définir ici l'interface de microservice suivante :
- Interface d'authentification utilisateur (authenticateUser)
- User Autoriser l'utilisateur #Maintenant, nous devons diviser notre interface de microservice en différents modules de microservice. Dans cet exemple, nous utiliserons les trois modules de microservice suivants : Microservice d'authentification et d'autorisation des utilisateursMicroservice de gestion des informations utilisateur
- microservice d'enregistrement des utilisateurs
- Architecture microservice
- Nous avons maintenant notre modèle de domaine, notre interface microservice et nos composants de module microservice, nous pouvons maintenant simplement les combiner dans une architecture microservices . L'architecture entière ressemble à ceci :
- Nous activons la passerelle API Lumen, qui est le point initial de notre système et recevra toutes les demandes et les acheminera vers le module de microservice approprié. Notre modèle de domaine est notre logique métier et l'interface du microservice contrôlera nos interactions avec les données.
- 为用户生成JWT标记
- 验证用户凭据
- 获取用户个人信息
- 更新用户密码
- 创建一个新用户,保存到数据库中
- 发送电子邮件以验证用户的电子邮件地址
API Gateway (Lumen) <--> User Authentication and Authorization Microservice <--> User Information Management Microservice <--> User Registration Microservice
第四步:实现微服务
现在,我们已经设计了微服务模块、微服务接口和整体微服务架构,我们可以开始实现我们的微服务。我们将针对上述三个微服务模块分别进行介绍。
1. 用户认证与授权微服务
我们的用户认证与授权微服务负责处理所有与用户认证相关的任务。它将接收用户凭据并验证它们的凭证是否正确。如果验证成功,它将生成一个JWT标记并将其返回给用户。
我们将针对以下任务编写用户认证与授权微服务:
我们可以通过安装tymon / jwt-auth组件来编写我们的用户认证与授权微服务。使用以下命令进行安装:
composer require tymon/jwt-auth
然后,我们需要在配置文件中配置JWT密钥。现在,我们可以使用以下代码为用户认证与授权微服务创建一个新控制器:
<?php namespace AppHttpControllers; use IlluminateSupportFacadesAuth; use AppModelsUser; use IlluminateHttpRequest; class AuthController extends Controller { /** * Create a new AuthController instance. * * @return void */ public function __construct() { $this->middleware('auth:api', ['except' => ['login']]); } /** * Get a JWT token. * * @return void */ public function login(Request $request) { $credentials = $request->only('email', 'password'); if ($token = $this->guard()->attempt($credentials)) { return $this->respondWithToken($token); } return response()->json(['error' => 'Unauthorized'], 401); } /** * Get the authenticated User. * * @return void */ public function me() { return response()->json(auth()->user()); } /** * Log the user out (Invalidate the token). * * @return void */ public function logout() { auth()->logout(); return response()->json(['message' => 'Successfully logged out']); } /** * Refresh a token. * * @return void */ public function refresh() { return $this->respondWithToken(auth()->refresh()); } /** * Get the token array structure. * * @param string $token * * @return mixed */ protected function respondWithToken($token) { return response()->json([ 'access_token' => $token, 'token_type' => 'bearer', 'expires_in' => auth()->factory()->getTTL() * 60 ]); } /** * Get the guard to be used during authentication. * * @return IlluminateContractsAuthGuard */ public function guard() { return Auth::guard(); } }
2. 用户信息管理微服务
用户信息管理微服务将负责向用户提供用户相关信息。在本例中,我们将创建以下操作的API:
首先,我们将创建一个新控制器来管理用户信息:
<?php namespace AppHttpControllers; use IlluminateSupportFacadesHash; use AppModelsUser; use IlluminateHttpRequest; class UserController extends Controller { public function getUser(Request $request) { $user = User::where('id', $request->id)->first(); if (!$user) { return response()->json(['message' => 'User not found.'], 404); } return response()->json(['user' => $user]); } public function updateUserPassword(Request $request) { $user = User::where('id', $request->id)->first(); if (!$user) { return response()->json(['message' => 'User not found.'], 404); } $user->password = Hash::make($request->password); $user->save(); return response()->json(['message' => 'User password updated successfully.']); } }
3. 用户注册微服务
注册微服务将处理用户注册过程。在本例中,我们将创建以下功能:
首先,我们将创建一个新控制器来处理用户注册。它应该读取POST有效载荷并保存新用户到数据库中。然后,它应该生成用户验证令牌并将其发送到用户的电子邮件地址。
<?php namespace AppHttpControllers; use IlluminateSupportFacadesHash; use AppModelsUser; use IlluminateHttpRequest; class RegisterController extends Controller { public function create(Request $request) { $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password), ]); $user->sendEmailVerificationNotification(); // send verification email return response()->json(['message' => 'User created successfully.']); } }
现在,我们可以在Lumen框架中实现我们的微服务。我们的系统现在有三个微服务模块:“用户认证和授权微服务”、“用户信息管理微服务”和“用户注册微服务”,这些微服务与数据库交互,并由Lumen API Gateway处理。
总结
本文介绍了如何在Lumen框架中集成微服务架构,包括领域模型设计、微服务接口和微服务模块的开发。以上代码展示了Lumen框架如何开发微服务的过程。通过使用Lumen框架,开发者可以快速构建微服务,提高代码质量,加快项目进程。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.
