Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk membina pelayan API menggunakan PHP
Dengan perkembangan pesat mudah alih, pengkomputeran awan, Internet Perkara dan teknologi lain, API telah menjadi cara penting interaksi data antara pelbagai aplikasi dan sistem. Dalam bidang pembangunan web, PHP, sebagai bahasa back-end yang popular, menyediakan banyak perpustakaan dan rangka kerja yang memudahkan pelaksanaan API. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membina pelayan API dan berkongsi keseluruhan proses daripada reka bentuk hingga pelaksanaan.
1. Analisis keperluan dan idea reka bentuk
Sebelum melaksanakan pelayan API, kami perlu menjelaskan keperluan dan idea reka bentuk. Artikel ini melaksanakan pelayan API mudah, dan keperluannya boleh diringkaskan seperti berikut:
Sebelum membina pelayan API, kita perlu menyediakan persekitaran pembangunan yang diperlukan seperti PHP dan MySQL. Anda boleh memilih untuk menggunakan persekitaran pembangunan bersepadu (IDE) seperti PHPStorm, Eclipse, dsb., atau anda boleh menggunakan editor ringan seperti Visual Studio Code, Sublime Text, dsb. Artikel ini mengambil PHPStorm sebagai contoh.
Pasang PHPStorm dan persekitaran PHP: Muat turun PHPStorm Semasa proses pemasangan, anda akan digesa untuk memasang persekitaran PHP secara lalai, atau anda boleh memilih laluan pemasangan sendiri. Selepas pemasangan selesai, jalankan PHPStorm, buka Keutamaan, dan tambahkan penterjemah PHP dalam Bahasa & Rangka Kerja > PHP.php -r "readfile('https://getcomposer.org/installer');" | php
3. Bina pelayan API
Dengan persekitaran pembangunan di atas, kita boleh mula membina pelayan API.
Buat projek: Buat projek PHP baharu dalam PHPStorm dan pasang rangka kerja Slim atau Lumen menggunakan Komposer:composer require slim/slim
Nota: Jika anda memilih untuk menggunakan rangka kerja Lumen, anda perlu menghidupkan suis $app->withFacades() dan $app->withEloquent() dalam fail bootstrap/app.php untuk menggunakan ORM Facade dan Eloquent fungsi yang disediakan oleh Lumen .
composer require illuminate/routing illuminate/httpMencipta laluan: Mencipta laluan dan perisian tengah adalah mudah dalam rangka kerja Slim atau Lumen. Cipta fail route.php dalam direktori akar, contohnya:
$app->get('/hello/{name}', function ($request, $response, $args) { $name = $args['name']; $response->getBody()->write("Hello, $name"); return $response; }); $app->get('/users', 'UsersController:index'); $app->post('/users', 'UsersController:create');/hello/{name}: accepts nama Parameter, mengembalikan rentetan "Hello, name"; memanggil kaedah cipta UsersController mencipta rekod pengguna baharu.
$app->add(new JwtAuthMiddleware());Pengawal UsersController ditakrifkan di sini, termasuk kaedah indeks dan cipta, yang sepadan dengan permintaan /users GET dan /users POST masing-masing. Gunakan Eloquent ORM untuk mengendalikan jadual data pengguna (User::all() dan $user->save()) dan kembalikan respons dalam format JSON.
namespace App\Controllers; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use App\Models\User; class UsersController { public function index(Request $request, Response $response) { $users = User::all(); $response = $response->withJson($users); return $response; } public function create(Request $request, Response $response) { $data = $request->getParsedBody(); $user = new User; $user->name = $data['name']; $user->email = $data['email']; $user->password = password_hash($data['password'], PASSWORD_DEFAULT); $user->save(); $response = $response->withJson($user); return $response; } }Pelayan web PHP terbina dalam dimulakan di sini , mendengar pada port 8000 . Akses http://localhost:8000/hello/world dalam penyemak imbas Dalam keadaan biasa, rentetan "Hello, world" harus dikembalikan. Apabila mengakses http://localhost:8000/users, data format JSON semua pengguna harus dikembalikan.
php -S localhost:8000 -t publicPasang rangka kerja Firebase JWT: Gunakan Komposer untuk memasang rangka kerja Firebase JWT:
composer require firebase/php-jwtIni mentakrifkan pelayan kebenaran AuthorizationServer, yang mengandungi dua kaedah:
这里使用了JWT加密框架,将用户信息存储在token中,并使用HS256算法加密。
namespace App\Middlewares; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use App\AuthorizationServer; class JwtAuthMiddleware { public function __invoke(Request $request, Response $response, $next) { try { $user = AuthorizationServer::authenticate($request); $request = $request->withAttribute('user', $user); return $next($request, $response); } catch (Exception $e) { return $response->withStatus(401)->withJson([ 'error' => $e->getMessage() ]); } } }
这里定义了一个JwtAuthMiddleware中间件,用户验证客户端请求的access token的有效性,并在后面的控制器中通过$request->getAttribute('user')获取到用户对象。
$app->post('/auth/token', 'AuthorizationServer:getToken'); $app->group('', function () use ($app) { $app->get('/users/@id', 'UsersController:getUser'); $app->put('/users/@id', 'UsersController:updateUser'); $app->delete('/users/@id', 'UsersController:deleteUser'); })->add(new JwtAuthMiddleware());
这里定义了一个/auth/token路由,用于获取访问令牌。另外,对于需要OAuth2授权的路由(getUser、updateUser和deleteUser),使用$app->group()方法包裹其中,并添加JwtAuthMiddleware中间件。
五、总结
本文介绍了如何使用PHP搭建API服务器,基于Slim或Lumen框架,解析URL参数、返回JSON格式的数据,并使用OAuth2框架保护API的安全性。使用这种方式搭建API服务器,可以快速、高效地开发出各种类型的RESTful API。但是,具体实现还需要根据实际需求进行适当调整和优化。
Atas ialah kandungan terperinci Bagaimana untuk membina pelayan API menggunakan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!