Rumah >rangka kerja php >Laravel >Ketahui lebih lanjut tentang penggunaan Laravel Swagger

Ketahui lebih lanjut tentang penggunaan Laravel Swagger

WBOY
WBOYke hadapan
2022-04-11 19:04:144280semak imbas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang laravel, yang terutamanya memperkenalkan isu-isu yang berkaitan dengan penggunaan Swagger Mari kita lihat menjana kesombongan berdasarkan Laravel sebagai contoh semua orang.

Ketahui lebih lanjut tentang penggunaan Laravel Swagger

[Cadangan berkaitan: Tutorial video laravel]

Swagger terlalu pedas?

Tutorial ini berdasarkan Laravel menjana kesombongan sebagai contoh Sebenarnya, perkara ini pada asasnya sama dengan bahasa atau rangka kerja, kerana mereka semua menggunakan json awam dan mengimbas "bahasa" yang telah ditetapkan. oleh swagger melalui program ”, struktur yang dihasilkan disimpan dalam json dan dipaparkan melalui swagger ui (atau dibangunkan sendiri).

Bagi pembangun PHP, kebanyakan pelajar tidak suka kesombongan. Kerana ini nampaknya sangat menyusahkan untuk menulis Apabila saya memikirkan tentang kod yang boleh ditulis dalam PHP dalam beberapa minit, ia mengambil masa 10 minit untuk menulis kesombongan, dan saya menahan perkara ini dalam hati saya.

Pelajar yang membangunkan Java tahu bahawa kebanyakan mereka menggunakan swagger, kerana Java perlu mengekalkan struktur data, dan swagger lebih fleksibel untuk disepadukan dalam Java.

Pada masa ini, jika anda melihat php di Jawa mengatakan bahawa kesombongan adalah anti-manusia, ia akan menjadi terlalu menyusahkan. Rakan Java di sekeliling saya akan diam-diam gembira kerana mereka tidak menggunakan perkara yang berguna itu, dan mereka juga mengatakan bahawa PHP adalah bahasa terbaik di dunia.

Kenapa saya menggunakan swagger

Saya telah menulis penjanaan kod automatik baru-baru ini, sebenarnya terdapat banyak kaedah Laravel yang menjana CURD secara automatik. Contohnya, seperti laravel-admin, arahan menjana CURD, tetapi selepas penjanaan, data kelihatan sangat sejuk. Sebagai contoh, beberapa medan tidak perlu dipaparkan, beberapa perlu dipilih untuk penghitungan yang berkaitan, ada yang hasMany, dan perancah api overtrue juga sangat baik

, jadi swaager juga boleh digunakan Tulis penjanaan automatik mengikut keperluan perniagaan

L5-Swagger

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

Pemasangan:

composer require "darkaonline/l5-swagger"

Gunakan:

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

Isi contoh berikut untuk menjana dan kemudian lawati

/api/documentation

@OAInfo diperlukan

Contoh

/**
 * @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"
 *     )
 * )
 */

dapatkan permintaan

Jika anda ingin memadankan nilai dalam laluan, dalam pertanyaan laluan dalam pertanyaan

/**
 * @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"}
 *         }
 *     },
 * )
 */

PERMINTAAN POST

              
    /**
     * @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":{}
     *         }
     *     },
     * )
     */

Parameter muat naik fail

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

dihantar sebagai penghitungan

     *     @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"},
     *             )
     *         )
     *     ),

Badan diserahkan dalam mod Json

     *     @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"}
     *             )
     *         )
     *     ),

Ketahui lebih lanjut tentang penggunaan Laravel Swagger

Gunakan Skema struktur sebagai parameter permintaan

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

Penggunaan Skema

/**
 * @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,
 *      )
 * )
 */

Penghitungan

Penghitungan Buat Skema berasingan

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

yang memetakan ke medan tertentu dalam model

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

supaya pembangun bahagian hadapan boleh

mengaitkan model

dan Penghitungan adalah serupa Dengan mengaitkan model dan penghitungan melalui model perkaitan Harta

 *      @OA\Property(
 *     property="user_detail",
 *     ref="#/components/schemas/UserModel2"
 *      ),

, parameter dan jumlah yang diminta boleh dijana secara automatik, dan struktur yang dikembalikan
Ketahui lebih lanjut tentang penggunaan Laravel Swagger

dikembalikan sebagai struktur model

     *     @OA\Response(
     *         response=200,
     *         description="successful operation",
     *         @OA\JsonContent(
     *             type="array",
     *             @OA\Items(ref="#/components/schemas/UserModel"),
     *             @OA\Items(ref="#/components/schemas/UserModel2")
     *         )
     *     ),
sama seperti hari gadis depan memberitahu anda, saudara, apa maksud status pembayaran 3? adalah status begini-begitu, tetapi bertanya kepada anda apakah status 11 itu, orang Semuanya sekeping kek.

Melalui Skema swagger, kakitangan bahagian hadapan boleh memahami maklumat struktur bahagian belakang, seperti:

Ketahui lebih lanjut tentang penggunaan Laravel Swagger

Semua orang, ini boleh diprogramkan secara automatik dan dijana secara automatik , jadi kecekapan kerja tidak diperlukan Sangat keren

Berbilang Skema gabungan

/**
 * @OA\Schema(
 *   schema="UserModel",
 *   allOf={
 *     @OA\Schema(ref="#/components/schemas/UserModel2"),
 *     @OA\Schema(
 *       type="object",
 *       description="Represents an authenticated user",
 *       required={
 *         "email",
 *         "role",
 *       },
 *       additionalProperties=false,
 *       @OA\Property(
 *         property="email",
 *         type="string",
 *         example="user@example.com",
 *         nullable=true,
 *       ),
 *     )
 *   }
 * )
 */
Pengesahan menyediakan dua kaedah, outh2 dan apikey, dan ditulis dalam konfigurasi global (juga boleh berada dalam mana-mana direktori )

/**
 * @OA\SecurityScheme(
 *     type="apiKey",
 *     in="query",
 *     securityScheme="api_key",
 *     name="api_key"
 * )
 */
Tambah

security={{"api_key": {}}},
pada antara muka Pada masa ini, perkara seperti kunci akan muncul dalam Ui yang sombong

Ketahui lebih lanjut tentang penggunaan Laravel SwaggerAnda boleh memasukkan token anda sendiri dan meminta Anda akan membawa token

yang boleh digabungkan dengan pengesahan token Laravel sendiri Anda boleh merujuk artikel yang ditulis sebelum ini Laravel guard chrysanthemum jaga Ketahui lebih lanjut tentang penggunaan Laravel Swagger
untuk lebih banyak kaedah penggunaan contoh laman web: https://github.com/zircote/swagger-php/tree/master/Examples/petstore-3.0

Mungkin masalah.

baris Jika anda tidak boleh mengakses persekitaran, ia mungkin menjadi masalah dengan konfigurasi nginx anda, kerana laravel-swagger menggemakan output js melalui file_content_get(). Berdasarkan konfigurasi nginx anda, jika ia adalah fail .js atau css, ia adalah fail statik, jadi index.php tidak boleh dicapai, dan fungsi file_content_get tidak boleh dilaksanakan. Anda boleh merujuk kepada konfigurasi nginx:

[Cadangan berkaitan:
charset utf-8;
client_max_body_size 128M;

location / {
	try_files $uri $uri/ /index.php$is_args$args;
}


location ~ \.php$ {
	include fastcgi_params;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	fastcgi_pass  php74:9000 这个换成你自己的;
	try_files $uri =404;
}
tutorial video laravel

]

Atas ialah kandungan terperinci Ketahui lebih lanjut tentang penggunaan Laravel Swagger. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam