Yêu cầu @oainfo() không tìm thấy tại nhà cung cấp/zircote/swagger-php/src loggers defaultlogger php 31

Vamos añadir Swagger a API proyecto nuestro REST con Laravel, con Swagger y Swagger UI vamos a poder documentar y exponer de forma organizada los End point de nuestra API

Swagger là một liên kết của giải thích về việc có nhiều nguồn sáng tạo trên cơ sở tài liệu của OpenAPI mà không phải là một tài liệu, tạo, xác định, và tiêu dùng các API ban đầu của một phiên bản chính thức. Como veremos a lo largo de esta publicación Swagger funciona a través de anotaciones en los commentarios proportionandonos a través de las mismas múltiples funcionalidades para documentary and probar nuestros End Points

En esta publicación vamos a ver la instalación de Swagger en a proyecto API REST con Laravel, y la utilización de las anotaciones, todo esto lo realizaremos sobre un proyecto ya publicado en a web

Cài đặt Swagger trong một dự án mà bạn tạo ra trong Código Xules, và các haremos được tạo ra từ một phần API của Ứng dụng microservicios với Laravel và RabbitMQ. 1. EL PROYECTO , cho ver como funciona Swagger puedes seguir las explicaciones en tu propio proyecto, siquieres tener como base mi proyecto trendr que seguir primero las publicaciones siguientes for crear API de doanh nghiệp se se la que documentemos aquí

  • 2. Proyecto backend ADMIN-APP con Docker Compose. Laravel, Nginx và MySQL. tạo ra proyecto ADMIN-APP con Laravel donde desarrollamos API CRUD cho doanh nghiệp (doanh nghiệp) và khách hàng (khách hàng)
  • 3. 1. Giới thiệu API REST của ADMIN-APP cho các doanh nghiệp. desarrollo de la API CRUD de Enterprises chắc chắn là người sử dụng có cơ sở tài liệu cho ứng dụng này

chỉ số

Nó đã được xuất bản như cài đặt và cấu hình Swagger và như tài liệu về các điểm cuối ban đầu

  1. Cài đặt Swagger trong Laravel
  2. Documentamos với Swagger là API REST của doanh nghiệp
    1. Định nghĩa của controlador cho Swagger
  3. Tài liệu là một trong những phương thức API con Swagger
    1. Danh sách các công ty. mục lục()
    2. Consulta de una empresa. hiển thị($id)

Phần mềm que utilizaremos

Danh sách này bao gồm những việc cần làm của phần mềm được sử dụng trong những việc cần làm của dự án, không có công khai riêng lẻ

  • Linux (Ubuntu 20. 04 LTS). hệ điều hành Linux với phiên bản Ubuntu 20. 04 LTS
  • Bến tàu (docker). phiên bản docker 20. 10. 7, hướng dẫn này sẽ giúp bạn sử dụng phiên bản Docker này
  • Docker soạn thảo (docker-compose). docker-compose phiên bản 1. 25. 0, , esta guía se ha genado utilizando esta versión
  • ấu trùng 8. framework PHP desarrollo de alicaciones web, en este caso utilizaremos la versión 8
  • Mysql 5. 7. phiên bản sử dụng trong imagen de docker-compose para la base de data
  • Nginx. dịch vụ web ứng dụng
  • PHP7. 4. utilizamos PHP trong một phiên bản cao cấp hơn 7. 4 siguiendo las recomendaciones de Laravel, por eso la imagen que utilicemos sera de esta version
  • nghệ nhân. programa de línea de comandos de Laravel que nos ayuda en la creación de elementos como modelos, controladores, …, y también, nos proporciona otras utilidades como gestión de las migraciones or el listado de las rutas
  • Đi vênh vang. conjunto de herramientas de codigo abierto creadas en base a la documentación de OpenAPI que nos ayuda a documentar, crear, definir, and Consumer nuestras APIs de una forma sencilla

1. Cài đặt Swagger trong Laravel

Để cài đặt Swagger trên Laravel và sử dụng ứng dụng di động L5-Swagger trên GitHub, bạn có thể tư vấn thông tin để tích hợp giải nén bởi DarkaOnLine trong Cài đặt & Cấu hình

En nuestro caso estamos trabajando con Laravel 8 la instalación que vamos a realizar aquí es válida para versiones de Laravel superiores a 6. X , y es muy sencilla

Añadimos con Composer el módulo a new proyecto (nuestro proyecto base esta con docker-compose por eso se ejecutan así los comandos, si no usas docker, pudes obviar la parte docker-compose exec admin-app-lpm)

$ docker-compose exec admin-app-lpm composer require "darkaonline/l5-swagger"

Tất cả những gì bạn cần làm và các tùy chọn cài đặt bảng điều khiển mà bạn cần là mô-đun

Using version ^8.2 for darkaonline/l5-swagger
 ./composer.json has been updated
 Running composer update darkaonline/l5-swagger
 Loading composer repositories with package information
 Updating dependencies
 Lock file operations: 6 installs, 0 updates, 0 removals
 Locking darkaonline/l5-swagger (8.2.0)
 Locking doctrine/annotations (1.13.2)
 Locking psr/cache (1.0.1)
 Locking swagger-api/swagger-ui (v4.5.0)
 Locking symfony/yaml (v5.4.3)
 Locking zircote/swagger-php (4.2.6)
 Writing lock file
 Installing dependencies from lock file (including require-dev)
 Package operations: 6 installs, 0 updates, 0 removals
 Downloading symfony/yaml (v5.4.3)
 Downloading psr/cache (1.0.1)
 Downloading doctrine/annotations (1.13.2)
 Downloading zircote/swagger-php (4.2.6)
 Downloading swagger-api/swagger-ui (v4.5.0)
 Downloading darkaonline/l5-swagger (8.2.0)
 Installing symfony/yaml (v5.4.3): Extracting archive
 Installing psr/cache (1.0.1): Extracting archive
 Installing doctrine/annotations (1.13.2): Extracting archive
 Installing zircote/swagger-php (4.2.6): Extracting archive
 Installing swagger-api/swagger-ui (v4.5.0): Extracting archive
 Installing darkaonline/l5-swagger (8.2.0): Extracting archive
 Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
 Generating optimized autoload files 
   Illuminate\Foundation\ComposerScripts::postAutoloadDump
   @php artisan package:discover --ansi
   Discovered Package: darkaonline/l5-swagger
   Discovered Package: facade/ignition
   Discovered Package: fruitcake/laravel-cors
   Discovered Package: laravel/sail
   Discovered Package: laravel/sanctum
   Discovered Package: laravel/tinker
   Discovered Package: nesbot/carbon
   Discovered Package: nunomaduro/collision
   Discovered Package: vladimir-yuldashev/laravel-queue-rabbitmq
   Package manifest generated successfully.
   80 packages you are using are looking for funding.
   Use the <code>composer fund</code> command to find out more!
   @php artisan vendor:publish --tag=laravel-assets --ansi --force
   No publishable resources for tag [laravel-assets].
   Publishing complete. 

Một trong những cách cài đặt có thể tạo tự động định cấu hình mới nhất để tạo ra các thiết bị có sẵn

$ docker-compose exec admin-app-lpm php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider"

 Copied File [/vendor/darkaonline/l5-swagger/config/l5-swagger.php] To [/config/l5-swagger.php]
 Copied Directory [/vendor/darkaonline/l5-swagger/resources/views] To [/resources/views/vendor/l5-swagger]
 Publishing complete.

Cada vez queramos currentizar la documentación de nuestro proyecto ejecutaremos la acción tao con el modulo l5-swagger de la siguiente forma

$ docker-compose exec admin-app-lpm php artisan l5-swagger:generate

Si lo ejecutamos ahora directamente nos dará un error ya que aún no hemos definido ninguna etiqueta y no podrá Genear la documentación, ejemplo

Regenerating docs default
 ErrorException 
 Required @OA\Info() not found
 at vendor/zircote/swagger-php/src/Loggers/DefaultLogger.php:31
      27▕         } else {
      28▕             $error_level = E_USER_WARNING;
      29▕         }
      30▕ 
   ➜  31▕         trigger_error($message, $error_level);
      32▕     }
      33▕ }
      34▕ 
 <code>  +23 vendor frames </code>
 24  artisan:37
       Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

Entonces antes de ejecutar ese comando vamos a finalizar la configuración para empezar a documentar la applicationa, and después ejecutar la generación automática

Trong lần thử đầu tiên, Swagger sẽ có cấu hình tự động hóa và cho phép bạn tạo cấu hình trong config/l5-swagger. php , en este proyecto como no hemosdefinido themeas de autentificación no vamos a entrar en detalles ensta parte, centrándonos en la documentación en el siguiente apartado

Por úlitmos, si queremos fijar la ejecución automática de Swagger definimos en el fichero. env el siguiente parametro

L5_SWAGGER_GENERATE_ALWAYS=true

2. Documentamos với Swagger là API REST của doanh nghiệp

En nuestra API en la publicación 3. 1. Desarrollamos el API REST của ADMIN-APP cho các doanh nghiệp đang tải xuống API REST của doanh nghiệp, tài liệu của Swagger la haremos en el controlador CmEnterpriseController veamos como

2. 1. Định nghĩa của controlador cho Swagger

Trong lớp thứ nhất CmEnterpriseController vamos a utilizar los commentarios para documentar la aplicación empezaremos utilizando anotación @OA\Info para definir la informationación del controlador, empezaremosdefiniendo la version, el titleulo and descriptión como se Puede ver a continue

/**
 * @OA\Info(
 *      version="1.0.0", 
 *      title="L5 OpenApi documentación de Enterprises",
 *      description="L5 Swagger OpenApi description para enterprises.",
 * )
 */
class CmEnterpriseController extends Controller

Otras anotaciones que podemos añadir por ejemplo son

  • @OA\Liên hệ. añadimos datos de contacto
  • @OA\Giấy phép. añadimos infoción sobre la licencia

Vamos añadir estás anotaciones y ver también como podemos añadir un logo (ban đầu bao gồm mặc định)

/**
 * @OA\Info(
 *      version="1.0.0",
 *      title="L5 OpenApi",
 *      description="L5 Swagger OpenApi description",
 *      x={
 *          "logo": {
 *              "url": "https://via.placeholder.com/190x90.png?text=L5-Swagger"
 *          }
 *      },
 *      @OA\Contact(
 *          email="[email protected]"
 *      ),
 *      @OA\License(
 *         name="Apache 2.0",
 *         url="https://www.apache.org/licenses/LICENSE-2.0.html"
 *     )
 * )
 */
class CmEnterpriseController extends Controller

¿Qué pasa si ahora ejecutamos la generación de documentación?

$ docker-compose exec admin-app-lpm php artisan l5-swagger:generate

Pues que nos va a dar un error porque aún no hemos documentado ningún method and nos dirá que no encuentra ningún @OA\PathItem() que es necesario para Genear la documentación, lo que ya tenemos es are a visualización web, en nuestro caso en . //máy chủ cục bộ. 28021/api/documentation, se ve así

Yêu cầu @oainfo() không tìm thấy tại nhà cung cấp/zircote/swagger-php/src loggers defaultlogger php 31
Swagger- Định nghĩa chính thức của Visualización OAInfo()

Thông tin về API ở định dạng JSON có thể được tư vấn trên http. //máy chủ cục bộ. 28021/docs/api-docs. json, como hemos dicho con la briefencia hacia el estándar Open API 3. 0

Yêu cầu @oainfo() không tìm thấy tại nhà cung cấp/zircote/swagger-php/src loggers defaultlogger php 31
Swagger – Thông tin tài liệu về API với phiên bản OPEN API 3. 0

Entonces vamos al siguiente punto a documentar los methodos

3. Tài liệu là một trong những phương thức API con Swagger

Vamos a ir repasando the method desarrollados en CmEnterpriseController and añadiéndoles la documentación. Các phương thức triển khai và bạn sẽ tương ứng với các hoạt động của con trai CRUD

  • mục lục(). listado de todas las empresas
  • cửa hàng(Yêu cầu $request). creación de una nueva empresa
  • hiển thị($id). tư vấn dữ liệu của một công ty
  • cập nhật (Yêu cầu $request, $id). hiện thực hóa dữ liệu của một công ty
  • tiêu diệt($id). loại bỏ một doanh nghiệp

3. 1. Danh sách các công ty. mục lục()

Phương pháp này của API và hiệp hội là một GET mà chúng tôi phát triển cho tất cả các công ty đăng ký, sử dụng phương pháp triển khai và tiếp tục với các tài liệu có sẵn

    public function index()
    {
      $enterprises = CmEnterprise::all();
      $message = 'Empresas obtenidos correctamente';
      $response = [
          'success' => true,
          'data'    => CmEnterpriseResource::collection($enterprises),
          'message' => $message,
      ];
      return response()->json($response, 200);
    }

Si inspeccionamos con route. list nuestro acceso a la API de listado de empresas (enterprises) vemos que se tương ứng với con

  • Miền
  • Phương pháp. LẤY. CÁI ĐẦU
  • URI. api/doanh nghiệp
  • Tên. doanh nghiệp. mục lục
  • Hoạt động. Ứng dụng\Http\Controllers\API\CmEnterpriseController@index
  • Phần mềm trung gian. api

Entonces vamos a ir llevando esa informationación anotaciones para que desde la web generada con Swagger podamos ver la information and probar el End Point

Using version ^8.2 for darkaonline/l5-swagger
 ./composer.json has been updated
 Running composer update darkaonline/l5-swagger
 Loading composer repositories with package information
 Updating dependencies
 Lock file operations: 6 installs, 0 updates, 0 removals
 Locking darkaonline/l5-swagger (8.2.0)
 Locking doctrine/annotations (1.13.2)
 Locking psr/cache (1.0.1)
 Locking swagger-api/swagger-ui (v4.5.0)
 Locking symfony/yaml (v5.4.3)
 Locking zircote/swagger-php (4.2.6)
 Writing lock file
 Installing dependencies from lock file (including require-dev)
 Package operations: 6 installs, 0 updates, 0 removals
 Downloading symfony/yaml (v5.4.3)
 Downloading psr/cache (1.0.1)
 Downloading doctrine/annotations (1.13.2)
 Downloading zircote/swagger-php (4.2.6)
 Downloading swagger-api/swagger-ui (v4.5.0)
 Downloading darkaonline/l5-swagger (8.2.0)
 Installing symfony/yaml (v5.4.3): Extracting archive
 Installing psr/cache (1.0.1): Extracting archive
 Installing doctrine/annotations (1.13.2): Extracting archive
 Installing zircote/swagger-php (4.2.6): Extracting archive
 Installing swagger-api/swagger-ui (v4.5.0): Extracting archive
 Installing darkaonline/l5-swagger (8.2.0): Extracting archive
 Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
 Generating optimized autoload files 
   Illuminate\Foundation\ComposerScripts::postAutoloadDump
   @php artisan package:discover --ansi
   Discovered Package: darkaonline/l5-swagger
   Discovered Package: facade/ignition
   Discovered Package: fruitcake/laravel-cors
   Discovered Package: laravel/sail
   Discovered Package: laravel/sanctum
   Discovered Package: laravel/tinker
   Discovered Package: nesbot/carbon
   Discovered Package: nunomaduro/collision
   Discovered Package: vladimir-yuldashev/laravel-queue-rabbitmq
   Package manifest generated successfully.
   80 packages you are using are looking for funding.
   Use the <code>composer fund</code> command to find out more!
   @php artisan vendor:publish --tag=laravel-assets --ansi --force
   No publishable resources for tag [laravel-assets].
   Publishing complete. 
0

En negrita os marco lo que sẽ tương ứng với tài liệu cho Swagger, giống như một phương pháp GET utilizamos la anotación @OA\Get y le vamos añadiendo informationación del End Point và las respuestas. También dejamos los commentarios que teníamos anteriormente para que veais como Interactiveúa con ellos Swagger, es sencillo

  • đường dẫn=»/api/doanh nghiệp». định nghĩa đường dẫn URL cuối cùng của điểm cuối
  • tags={«doanh nghiệp»}. Hoa Kỳ gắn thẻ doanh nghiệp cho nông nghiệp và tất cả các điểm cuối của doanh nghiệp
  • tóm tắt=»Mostrar el listado de empresas». descripción del End Point
  • @OA\Phản hồi. con esta anotación definimos como son cada un de las respuestas del End point desde el Ok con 200 a las de errores

Cómo hemos marcado la currentización en automático de Swagger si vamos ahora directamente a la web ya podemos Consultant el End point and ver el resultado, veámoslo paso a paso

phần 1. ahora ya nos aparece el metedo GET para /api/empresas dentro de Enterprises

Yêu cầu @oainfo() không tìm thấy tại nhà cung cấp/zircote/swagger-php/src loggers defaultlogger php 31
Swagger – Danh sách các công ty conpresas api/enterprise

phần 2. si desplegamos el endpoint vemos la information añadida and la opción Dùng thử cho probar el endpoint

Yêu cầu @oainfo() không tìm thấy tại nhà cung cấp/zircote/swagger-php/src loggers defaultlogger php 31
Swagger – Documentación del method GET api/enterprise

phần 3. al pulsar Hãy dùng thử các tùy chọn tự động hóa chung của ejecutar lalamada a la API

Yêu cầu @oainfo() không tìm thấy tại nhà cung cấp/zircote/swagger-php/src loggers defaultlogger php 31
Swagger – Generamos la lamada para probar el method

phần 4. como nuestra Consulta ha tenido éxito se muestra el codigo de respuesta 200 y la respuesta, además podemos ver la lamada a realizar con curl y la URL de la llamada (URL yêu cầu)

Yêu cầu @oainfo() không tìm thấy tại nhà cung cấp/zircote/swagger-php/src loggers defaultlogger php 31
Swagger – Kết quả của phương pháp GET api/enterprise

3. 2. Consulta de una empresa. hiển thị($id)

Este method segenera con un method GET en la lllamada con el id de la empresa tal que así. api/doanh nghiệp/1. Veamos el method desarrollado que sería el siguiente y nos devuelve los datas de la empresa Consultantada

Using version ^8.2 for darkaonline/l5-swagger
 ./composer.json has been updated
 Running composer update darkaonline/l5-swagger
 Loading composer repositories with package information
 Updating dependencies
 Lock file operations: 6 installs, 0 updates, 0 removals
 Locking darkaonline/l5-swagger (8.2.0)
 Locking doctrine/annotations (1.13.2)
 Locking psr/cache (1.0.1)
 Locking swagger-api/swagger-ui (v4.5.0)
 Locking symfony/yaml (v5.4.3)
 Locking zircote/swagger-php (4.2.6)
 Writing lock file
 Installing dependencies from lock file (including require-dev)
 Package operations: 6 installs, 0 updates, 0 removals
 Downloading symfony/yaml (v5.4.3)
 Downloading psr/cache (1.0.1)
 Downloading doctrine/annotations (1.13.2)
 Downloading zircote/swagger-php (4.2.6)
 Downloading swagger-api/swagger-ui (v4.5.0)
 Downloading darkaonline/l5-swagger (8.2.0)
 Installing symfony/yaml (v5.4.3): Extracting archive
 Installing psr/cache (1.0.1): Extracting archive
 Installing doctrine/annotations (1.13.2): Extracting archive
 Installing zircote/swagger-php (4.2.6): Extracting archive
 Installing swagger-api/swagger-ui (v4.5.0): Extracting archive
 Installing darkaonline/l5-swagger (8.2.0): Extracting archive
 Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
 Generating optimized autoload files 
   Illuminate\Foundation\ComposerScripts::postAutoloadDump
   @php artisan package:discover --ansi
   Discovered Package: darkaonline/l5-swagger
   Discovered Package: facade/ignition
   Discovered Package: fruitcake/laravel-cors
   Discovered Package: laravel/sail
   Discovered Package: laravel/sanctum
   Discovered Package: laravel/tinker
   Discovered Package: nesbot/carbon
   Discovered Package: nunomaduro/collision
   Discovered Package: vladimir-yuldashev/laravel-queue-rabbitmq
   Package manifest generated successfully.
   80 packages you are using are looking for funding.
   Use the <code>composer fund</code> command to find out more!
   @php artisan vendor:publish --tag=laravel-assets --ansi --force
   No publishable resources for tag [laravel-assets].
   Publishing complete. 
1

Ahora lo documentamos utilizando la anotación

Using version ^8.2 for darkaonline/l5-swagger
 ./composer.json has been updated
 Running composer update darkaonline/l5-swagger
 Loading composer repositories with package information
 Updating dependencies
 Lock file operations: 6 installs, 0 updates, 0 removals
 Locking darkaonline/l5-swagger (8.2.0)
 Locking doctrine/annotations (1.13.2)
 Locking psr/cache (1.0.1)
 Locking swagger-api/swagger-ui (v4.5.0)
 Locking symfony/yaml (v5.4.3)
 Locking zircote/swagger-php (4.2.6)
 Writing lock file
 Installing dependencies from lock file (including require-dev)
 Package operations: 6 installs, 0 updates, 0 removals
 Downloading symfony/yaml (v5.4.3)
 Downloading psr/cache (1.0.1)
 Downloading doctrine/annotations (1.13.2)
 Downloading zircote/swagger-php (4.2.6)
 Downloading swagger-api/swagger-ui (v4.5.0)
 Downloading darkaonline/l5-swagger (8.2.0)
 Installing symfony/yaml (v5.4.3): Extracting archive
 Installing psr/cache (1.0.1): Extracting archive
 Installing doctrine/annotations (1.13.2): Extracting archive
 Installing zircote/swagger-php (4.2.6): Extracting archive
 Installing swagger-api/swagger-ui (v4.5.0): Extracting archive
 Installing darkaonline/l5-swagger (8.2.0): Extracting archive
 Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
 Generating optimized autoload files 
   Illuminate\Foundation\ComposerScripts::postAutoloadDump
   @php artisan package:discover --ansi
   Discovered Package: darkaonline/l5-swagger
   Discovered Package: facade/ignition
   Discovered Package: fruitcake/laravel-cors
   Discovered Package: laravel/sail
   Discovered Package: laravel/sanctum
   Discovered Package: laravel/tinker
   Discovered Package: nesbot/carbon
   Discovered Package: nunomaduro/collision
   Discovered Package: vladimir-yuldashev/laravel-queue-rabbitmq
   Package manifest generated successfully.
   80 packages you are using are looking for funding.
   Use the <code>composer fund</code> command to find out more!
   @php artisan vendor:publish --tag=laravel-assets --ansi --force
   No publishable resources for tag [laravel-assets].
   Publishing complete. 
2

Các ứng dụng anotaciones và giải thích trước đó không phải là desarrollamos porque se entienden por si mama, en este caso definimos en la documentación que es obligatorio el paso del parámetro del id de empresa con la anotación @OA\Parameter

  • sự mô tả. descripción del parametro necesario
  • bắt buộc = đúng. indicamos que es obligatorio
  • @OA\Lược đồ(loại=»chuỗi»),
  • @OA\Examples(example=»int», value=»1″, summary=»Introduce un numberero de id de empresa. »). indicamos como sería un ejemplo para Consultant la empresa con id = 1 que veremos como lo utilizar en la presentación web para lanzar lalamada al endpoint

Yêu cầu @oainfo() không tìm thấy tại nhà cung cấp/zircote/swagger-php/src loggers defaultlogger php 31
Swagger – Phương pháp mới nhất để tư vấn cho một doanh nghiệp

Cómo hicimos antes pulsamos Hãy dùng thử để nói chung là llamada al End point con la diferencia que ahora podemos introducir los datos de la empresa que queremos Consultant, como podemos ver en las siguientes imágenes

Swagger có hỗ trợ PHP không?

Ghi lại API của bạn bên trong mã nguồn PHP . Using swagger-php lets you write the API documentation inside the PHP source files which helps keeping the documentation up-to-date.

vênh váo là gì

swagger-php là thư viện trích xuất siêu dữ liệu API từ tệp mã nguồn PHP của bạn . Ý tưởng là thêm các chú thích hoặc thuộc tính swagger-php bên cạnh mã PHP có liên quan trong ứng dụng của bạn. Chúng sẽ chứa thông tin chi tiết về API của bạn và swagger-php sẽ chuyển đổi chúng thành tài liệu OpenAPI có thể đọc được bằng máy.