


PHP dan Lumen berintegrasi untuk merealisasikan pembangunan seni bina perkhidmatan mikro
Dengan perkembangan pesat teknologi IT, perusahaan moden menghadapi sistem perniagaan yang lebih kompleks Seni bina aplikasi tunggal tradisional tidak lagi dapat memenuhi keperluan, dan seni bina perkhidmatan mikro muncul mengikut keperluan masa. Seni bina perkhidmatan mikro ialah gaya seni bina di mana aplikasi terdiri daripada berbilang perkhidmatan kecil yang boleh digunakan, dijalankan, dikembangkan dan diselenggara secara bebas untuk mencapai kebolehskalaan, kebolehgunaan semula dan fleksibiliti yang lebih baik.
Jadi, bagaimana untuk menggunakan PHP untuk melaksanakan seni bina perkhidmatan mikro? Jawapannya ialah menggunakan Lumen - rangka kerja PHP yang ringan. Berdasarkan Laravel, Lumen ialah rangka kerja PHP yang direka untuk membina perkhidmatan mikro dan API. Artikel ini akan memperkenalkan cara mengintegrasikan seni bina perkhidmatan mikro dalam rangka kerja Lumen.
Langkah 1: Pasang Lumen
Mula-mula, kita perlu memasang rangka kerja Lumen secara setempat. Langkah pemasangan adalah sama seperti untuk Laravel. Ia boleh dipasang melalui komposer, seperti yang ditunjukkan di bawah:
composer create-project --prefer-dist laravel/lumen lumen_api
Selepas selesai, kita boleh memulakan persekitaran berjalan rangka kerja Lumen secara setempat:
php -S localhost:8000 -t public
Apabila "Pelayan pembangunan Lumen bermula:
Langkah 2: Tulis Microservices
Seterusnya, kami akan menggunakan rangka kerja Lumen untuk menulis perkhidmatan mikro pertama kami. Kami akan mencipta API mudah yang mendapat senarai semua pengguna. Langkah-langkah untuk melaksanakan API ini adalah seperti berikut:
- Buat laluan API
Dalam laluan fail laluan/web.php, kita perlu menulis laluan untuk mengendalikan permintaan kepada API. Dalam contoh ini, kami akan menulis laluan GET dalam fail penghalaan untuk mengendalikan permintaan /get_users, seperti yang ditunjukkan di bawah:
$router->get('/get_users', function () use ($router) { return 'List of all users'; });
Pada masa ini, apabila anda meminta http://localhost:8000/get_users, "List" akan menjadi rentetan semua pengguna" dikembalikan.
- Mengendalikan Permintaan API
Sekarang, kita perlu mencipta kelas pengawal untuk API kita. Mari buat kelas UserController yang akan bertanggungjawab untuk mengendalikan permintaan get_users dan mengembalikan senarai pengguna. Kami boleh mencipta fail UserController.php dalam direktori app/Http/Controllers dan salin kod berikut ke dalamnya:
<?php namespace AppHttpControllers; use IlluminateHttpRequest; class UserController extends Controller { public function getAllUsers() { $users = ['User 1', 'User 2', 'User 3']; return response()->json($users); } }
Dalam kod di atas, kami telah menentukan fungsi awam getAllUsers() yang akan mengembalikan Senarai semua pengguna sebagai respons dalam format JSON.
- Daftar laluan API ke pengawal
Sekarang kita perlu mendaftar laluan API ke pengawal UserController dalam fail laluan, petakan laluan kami /api/get_users kepada kaedah UserController@getAllUsers, dan ubah suai fail laluan seperti yang ditunjukkan di bawah :
$router->get('api/get_users', 'UserController@getAllUsers');
Pada ketika ini, apabila anda meminta http://localhost:8000/api/get_users, senarai pengguna dalam format JSON akan dikembalikan, seperti yang ditunjukkan di bawah:
{ "0": "User 1", "1": "User 2", "2": "User 3" }
Akhir sekali, kami juga perlu mengimport UserController kelas di bahagian atas, seperti berikut Ditunjukkan:
<?php use AppHttpControllersUserController;
Dengan cara ini, kami telah berjaya melaksanakan API paling asas dan boleh dijalankan di bawah rangka kerja Lumen.
Langkah 3: Integrasikan rangka kerja mikroperkhidmatan
Sebelum ini, kami telah mencipta API pertama kami dalam rangka kerja Lumen, tetapi ia bukan aplikasi perkhidmatan mikro sebenar. Untuk menjadikan Lumen sebagai aplikasi seni bina perkhidmatan mikro, kami perlu menggunakan idea reka bentuk model domain DDD untuk membina semula aplikasi kami. Kemudian, kami akan menggunakan idea perkhidmatan mikro untuk menguraikan setiap perkhidmatan kami kepada perkhidmatan mikro.
- Reka Bentuk Domain
Pertama, kami perlu menentukan model domain kami, yang merupakan teras aplikasi kami. Dalam contoh ini, kami akan mencipta perkhidmatan mikro pengurusan pengguna mudah yang fungsi utamanya adalah untuk mengurus data pengguna.
Perkhidmatan mikro pengurusan pengguna kami mesti mempunyai fungsi berikut:
- Pendaftaran pengguna
- Pengesahan pengguna
- Keizinan pengguna
- Pengurusan maklumat pengguna
Sekarang kita perlu memetakan fungsi mikro ini.
- Antara muka perkhidmatan mikro
Kami akan mereka bentuk antara muka perkhidmatan mikro yang berbeza mengikut fungsi berbeza dalam model domain. Di sini kami akan mentakrifkan antara muka perkhidmatan mikro berikut:
- Antara muka pendaftaran pengguna (registerUser)
- Antara muka pengesahan pengguna (authenticateUser)
- Antara muka kebenaran pengguna (authorizeUser)
- Antara muka pengurusan maklumat pengguna (pengurusan maklumat pengguna)
- Kini, kami perlu membahagikan antara muka perkhidmatan mikro kami kepada modul perkhidmatan mikro yang berbeza. Dalam contoh ini, kami akan menggunakan tiga modul perkhidmatan mikro berikut:
Perkhidmatan Mikro Pengesahan dan Kebenaran Pengguna
- Perkhidmatan Mikro Pengurusan Maklumat Pengguna Perkhidmatan Mikro Pendaftaran Pengguna
- Modul perkhidmatan mikro ini akan bersambung terus dengan pangkalan data kami untuk berinteraksi.
Seni Bina Perkhidmatan Mikro
- Kami kini mempunyai komponen model domain kami, antara muka perkhidmatan mikro dan modul perkhidmatan mikro, dan kini kami boleh menggabungkannya ke dalam seni bina perkhidmatan mikro. Keseluruhan seni bina kelihatan seperti ini:
API Gateway (Lumen) <--> User Authentication and Authorization Microservice <--> User Information Management Microservice <--> User Registration Microservice
第四步:实现微服务
现在,我们已经设计了微服务模块、微服务接口和整体微服务架构,我们可以开始实现我们的微服务。我们将针对上述三个微服务模块分别进行介绍。
1. 用户认证与授权微服务
我们的用户认证与授权微服务负责处理所有与用户认证相关的任务。它将接收用户凭据并验证它们的凭证是否正确。如果验证成功,它将生成一个JWT标记并将其返回给用户。
我们将针对以下任务编写用户认证与授权微服务:
- 为用户生成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框架,开发者可以快速构建微服务,提高代码质量,加快项目进程。
Atas ialah kandungan terperinci PHP dan Lumen berintegrasi untuk merealisasikan pembangunan seni bina perkhidmatan mikro. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

CakePHP ialah rangka kerja MVC sumber terbuka. Ia menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP mempunyai beberapa perpustakaan untuk mengurangkan beban tugas yang paling biasa.

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,
