Rumah  >  Artikel  >  rangka kerja php  >  Cara menggunakan rangka kerja Hyperf untuk penjanaan dokumentasi API

Cara menggunakan rangka kerja Hyperf untuk penjanaan dokumentasi API

WBOY
WBOYasal
2023-10-20 08:24:34804semak imbas

Cara menggunakan rangka kerja Hyperf untuk penjanaan dokumentasi API

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:

  1. Pasang rangka kerja Hyperf: Gunakan alat Komposer untuk memasang rangka kerja Hyperf dengan cepat dan mudah.
  2. Konfigurasi penghalaan: Konfigurasikan maklumat penghalaan dalam fail config/routes.php.
  3. Pasang alat penjanaan dokumentasi API: Rangka kerja Hyperf mempunyai alat penjanaan dokumentasi API yang disyorkan secara rasmi dipanggil Swaggervel, yang boleh dipasang melalui Komposer.

2. Jana dokumentasi API
Berikut ialah langkah dan contoh kod khusus untuk menggunakan rangka kerja Hyperf untuk menjana dokumentasi API:

  1. Pasang Swaggervel

    composer require overtrue/laravel-swagger
  2. 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();
     }
    }

  3. Konfigurasikan laluan akses

    Tambah konfigurasi penghalaan berikut dalam fail config/routes.php:

    use AppDocDocGenerator;
    
    Router::get('/api/docs', function (DocGenerator $docGenerator) {
     return $docGenerator->generate();
    });

  4. Jana dokumentasi API

    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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn