Cara menggunakan rangka kerja Hyperf untuk penjanaan dokumen API
Pengenalan:
Dengan perkembangan pesat Internet, API (Antaramuka Pengaturcaraan Aplikasi) telah menjadi bahagian yang amat diperlukan, yang boleh menghubungkan aplikasi yang berbeza untuk mencapai perkongsian dan interaksi Data . Untuk pasukan pembangunan, dokumentasi API yang baik ialah alat penting untuk memastikan kerjasama pasukan. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Hyperf untuk menjana dokumentasi API yang jelas dan mudah digunakan, dan menunjukkannya melalui contoh kod tertentu.
1. Persediaan
Sebelum anda mula menggunakan rangka kerja Hyperf untuk menjana dokumen API, anda perlu membuat persediaan berikut:
2. Jana dokumentasi API
Berikut ialah langkah dan contoh kod khusus untuk menggunakan rangka kerja Hyperf untuk menjana dokumentasi API:
Pasang Swaggervel
composer require overtrue/laravel-swagger
Buatnya sebagai dokumentasi di bawah penjana apl /Doc folder Fail DocGenerator.php dan tulis kod berikut di dalamnya:
<?php namespace AppDoc; use HyperfValidationContractValidatorFactoryInterface; use OvertrueLaravelSwaggerRequest; use OvertrueLaravelSwaggerSwagger as BaseSwagger; class DocGenerator { protected $validator; public function __construct(ValidatorFactoryInterface $validator) { $this->validator = $validator; } public function generate() { $swagger = new BaseSwagger([ 'swagger' => '2.0', 'info' => [ 'title' => config('app.name'), 'version' => config('app.version'), ], ]); $routes = app('router')->getRoutes(); foreach ($routes as $route) { $methods = $route->methods(); $path = $route->uri(); foreach ($methods as $method) { $request = new Request([ 'method' => $method, 'uri' => $route->uri(), ]); $docBlock = $route->getAction()['doc'] ?? null; // 从Route中获取注释 $parameters = []; $validator = $this->validator->make($request->all(), $docBlock ? $docBlock['rules'] : []); foreach ($validator->failed() as $field => $messages) { $parameters[] = [ 'name' => $field, 'in' => 'query', 'required' => true, 'description' => implode(', ', $messages), ]; } $responses = []; $responses[] = [ 'statusCode' => 200, 'description' => '请求成功', 'data' => [ 'type' => 'object', 'properties' => [ 'code' => [ 'type' => 'integer', ], 'message' => [ 'type' => 'string', ], 'data' => [ 'type' => 'object', 'nullable' => true, ], ], ], ]; $swagger->addPath($path, $method, [ 'parameters' => $parameters, 'responses' => $responses, ]); } } return $swagger->toYaml(); } }
Tambah konfigurasi penghalaan berikut dalam fail config/routes.php:
use AppDocDocGenerator; Router::get('/api/docs', function (DocGenerator $docGenerator) { return $docGenerator->generate(); });
Janakan dokumentasi API arahan berikut dalam terminal Jana dokumentasi API:
php bin/hyperf.php serve
Atas ialah kandungan terperinci Cara menggunakan rangka kerja Hyperf untuk penjanaan dokumentasi API. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!