Heim >PHP-Framework >Laravel >Erfahren Sie mehr über die Verwendung von Laravel Swagger

Erfahren Sie mehr über die Verwendung von Laravel Swagger

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBnach vorne
2022-04-11 19:04:144311Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über Laravel, das hauptsächlich Probleme im Zusammenhang mit der Verwendung von Swagger als Beispiel ansieht. Ich hoffe, dass es für alle hilfreich ist.

Erfahren Sie mehr über die Verwendung von Laravel Swagger

【Verwandte Empfehlung: Laravel-Video-Tutorial

Swagger ist zu scharf?

Dieses Tutorial basiert auf der Laravel-Generierung von Swagger. Tatsächlich ist dieses Ding im Grunde dasselbe wie eine Sprache oder ein Framework, da sie alle öffentliches JSON verwenden. Die durch Swagger vorgegebene „Sprache“ wird durch das Programm gescannt , und die generierte Struktur wird im JSON-Format gespeichert und über die Swagger-Benutzeroberfläche angezeigt (oder von Ihnen selbst entwickelt).

Für PHP-Entwickler mögen die meisten Studenten keine Prahlerei. Weil das Schreiben sehr mühsam zu sein scheint. Wenn ich an den Code denke, der in wenigen Minuten in PHP geschrieben werden kann, dauert das Schreiben von Prahlerei 10 Minuten, und ich bin dagegen.

Studenten, die an der Java-Entwicklung beteiligt sind, wissen, dass die meisten von ihnen Swagger verwenden, da Java die Datenstruktur beibehalten muss und Swagger flexibler in Java zu integrieren ist.

Wenn Sie zu diesem Zeitpunkt PHP in Java sehen, das sagt, dass Prahlerei unmenschlich ist, wird es zu mühsam sein. Es ist ein Produkt aus alten Zeiten. Die Java-Freunde um Sie herum werden insgeheim froh sein, dass sie nicht so nützliche Dinge verwenden, und sie sagen auch, dass PHP die beste Sprache der Welt ist.

Warum verwende ich Swagger? Ich habe kürzlich automatische Codegenerierung geschrieben. Tatsächlich generiert Laravel jetzt automatisch CURD. Zum Beispiel ist das API-Gerüst von Overtrue (Zhengchao) auch sehr gut

damit Swaager auch eine automatisierte Generierung entsprechend den Geschäftsanforderungen schreiben kann

laravel-admin ,一条命令生成CURD,但是生成之后,数据看上去很冷。 比如有一些字段不需要显示,有一些是要select关联枚举的,有一些是 hasMany

L5-Swagger

https://github.com/DarkaOnLine/ L5-Swagger Installation:

composer require "darkaonline/l5-swagger"

Verwendung:

php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider"
php artisan l5-swagger:generate

Füllen Sie das folgende Beispiel aus, um

/api/documentation

@OAInfo zu generieren und dann darauf zuzugreifen. Abfrage im Pfad in Abfrage

Verwenden Sie das Strukturschema als Anforderungsparameter

/**
 * @OA\Info(
 *      version="1.0.0",
 *      title="L5 OpenApi",
 *      description="L5 Swagger OpenApi description",
 *      @OA\Contact(
 *          email="darius@matulionis.lt"
 *      ),
 *     @OA\License(
 *         name="Apache 2.0",
 *         url="http://www.apache.org/licenses/LICENSE-2.0.html"
 *     )
 * )
 */

Die Verwendung von Schema

/**
 * @OA\Get(
 *      path="/projects/{id}",
 *      operationId="getProjectById",
 *      tags={"Projects"},
 *      summary="Get project information",
 *      description="Returns project data",
 *      @OA\Parameter(
 *          name="id",
 *          description="Project id",
 *          required=true,
 *          in="path",
 *          @OA\Schema(
 *              type="integer"
 *          )
 *      ),
 *      @OA\Response(
 *          response=200,
 *          description="successful operation"
 *       ),
 *      @OA\Response(response=400, description="Bad request"),
 *      @OA\Response(response=404, description="Resource Not Found"),
 *      security={
 *         {
 *             "oauth2_security_example": {"write:projects", "read:projects"}
 *         }
 *     },
 * )
 */

Enumeration

Eine Enumeration erstellt ein Schema

              
    /**
     * @OA\Post(
     *      path="/api/test/store",
     *      operationId="api/test/store",
     *      tags={"Test"},
     *      summary="Test创建",
     *      description="Test提交创建",
     *      @OA\Parameter(
     *          name="id",
     *          description="",
     *          required=false,
     *          in="query",
     *      ),
     *     @OA\Response(
     *         response=200,
     *         description="successful operation",
     *         @OA\JsonContent(
     *         ref="#/components/schemas/Test"
     *         )
     *     ),
     *      @OA\Response(response=400, description="Bad request"),
     *      @OA\Response(response=404, description="Resource Not Found"),
     *      security={
     *         {
     *             "api_key":{}
     *         }
     *     },
     * )
     */

, das bestimmten Feldern im Modell

     *     @OA\RequestBody(
     *       @OA\MediaType(
     *           mediaType="multipart/form-data",
     *           @OA\Schema(
     *               type="object",
     *               @OA\Property(
     *                  property="file",
     *                  type="file",
     *               ),
     *           ),
     *       )
     *     ),

zugeordnet ist, damit Front-End-Entwickler

das Modell verknüpfen können ist einem Schema ähnlich umeration , durch ein Property Associated Model

     *     @OA\Parameter(
     *         name="status",
     *         in="query",
     *         description="状态",
     *         required=true,
     *         explode=true,
     *         @OA\Schema(
     *             type="array",
     *             default="available",
     *             @OA\Items(
     *                 type="string",
     *                 enum = {"available", "pending", "sold"},
     *             )
     *         )
     *     ),

Associated model and enumeration, kann automatisch die angeforderten Parameter generieren und die zurückgegebene Struktur

wird als Modellstruktur zurückgegeben
     *     @OA\RequestBody(
     *         @OA\MediaType(
     *             mediaType="application/json",
     *             @OA\Schema(
     *                 @OA\Property(
     *                     property="id",
     *                     type="string"
     *                 ),
     *                 @OA\Property(
     *                     property="name",
     *                     type="string"
     *                 ),
     *                 example={"id": 10, "name": "Jessica Smith"}
     *             )
     *         )
     *     ),
Genau wie an dem Tag, als das Front-End-Mädchen es dir erzählt hat, Bruder , was bedeutet Zahlungsstatus 3? Vielleicht haben Sie schnell gesagt, dass es sich um einen bestimmten Status handelt, aber wenn ich Sie fragen würde, was Status 11 ist, wären die Leute verwirrt.

Durch das Swagger-Schema kann das Front-End-Personal die Strukturinformationen des Back-Ends herausfinden, wie zum Beispiel:

Erfahren Sie mehr über die Verwendung von Laravel Swagger

Jeder, diese können automatisch programmiert und automatisch generiert werden, sodass die Arbeitseffizienz nicht zu gut ist

Mehrere zusammengeführte Schemata

     *     @OA\RequestBody(
     *         description="order placed for purchasing th pet",
     *         required=true,
     *         @OA\JsonContent(ref="#/components/schemas/UserModel")
     *     ),

Überprüfung Stellen Sie zwei Methoden bereit: outh2 und apikey, schreiben Sie in die globale Konfiguration (kann sich auch in einem beliebigen Verzeichnis befinden)

/**
 * @OA\Schema(
 *      schema="UserModel",
 *      required={"username", "age"},
 *      @OA\Property(
 *          property="username",
 *          format="string",
 *          description="用户名称",
 *          example="小廖",
 *      ),
 *      @OA\Property(
 *          property="age",
 *          format="int",
 *          description="年龄",
 *          example=1,
 *          nullable=true,
 *      )
 * )
 */
Fügen Sie

/**
 * @OA\Schema(
 *   schema="product_status",
 *   type="string",
 *   description="The status of a product",
 *   enum={"available", "discontinued"},
 *   default="available"
 * )
 */
in der Schnittstelle hinzu

Zu diesem Zeitpunkt wird ein sperrenähnliches Ding angezeigt in der Swagger-Ui

Okay Geben Sie Ihren eigenen Token ein, und der Token wird bei einer Anfrage mitgebracht


Erfahren Sie mehr über die Verwendung von Laravel Swagger

Sie können es mit der eigenen Token-Überprüfung von Laravel kombinieren. Sie können sich auf den Artikel beziehen, den ich vor Laravel Guard geschrieben habe Chrysanthemenschutz

Weitere Verwendungsmethoden finden Sie im Beispiel der offiziellen Website: https://github.com/zircote/swagger-php/tree/master/Examples/petstore-3.0


Mögliche Probleme

Erfahren Sie mehr über die Verwendung von Laravel Swagger

Wenn Sie nicht auf die Online-Umgebung zugreifen können, liegt möglicherweise ein Problem mit Ihrer Nginx-Konfiguration vor, da laravel-swagger js über file_content_get() ausgibt und ausgibt. Wenn es sich um eine .js- oder CSS-Datei handelt, handelt es sich Ihrer Nginx-Konfiguration nach um eine statische Datei, sodass index.php nicht erreicht werden kann und die Funktion file_content_get nicht ausgeführt werden kann. Sie können sich auf die Nginx-Konfiguration beziehen:

 *      @OA\Property(
 *     property="status",
 *     ref="#/components/schemas/product_status"
 *      ),
[Verwandte Empfehlungen:

Laravel-Video-Tutorial

]

Das obige ist der detaillierte Inhalt vonErfahren Sie mehr über die Verwendung von Laravel Swagger. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen