Heim > PHP-Framework > Laravel > Hauptteil

Erfahren Sie mehr über die Verwendung von Laravel Swagger

WBOY
Freigeben: 2022-04-11 20:54:10
nach vorne
4221 Leute haben es durchsucht

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"
Nach dem Login kopieren

Verwendung:

php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider"
php artisan l5-swagger:generate
Nach dem Login kopieren

Füllen Sie das folgende Beispiel aus, um

/api/documentation
Nach dem Login kopieren

@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"
 *     )
 * )
 */
Nach dem Login kopieren

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"}
 *         }
 *     },
 * )
 */
Nach dem Login kopieren

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":{}
     *         }
     *     },
     * )
     */
Nach dem Login kopieren

, das bestimmten Feldern im Modell

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

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"},
     *             )
     *         )
     *     ),
Nach dem Login kopieren

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"}
     *             )
     *         )
     *     ),
Nach dem Login kopieren
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")
     *     ),
Nach dem Login kopieren

Ü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,
 *      )
 * )
 */
Nach dem Login kopieren
Fügen Sie

/**
 * @OA\Schema(
 *   schema="product_status",
 *   type="string",
 *   description="The status of a product",
 *   enum={"available", "discontinued"},
 *   default="available"
 * )
 */
Nach dem Login kopieren
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"
 *      ),
Nach dem Login kopieren
[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!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!