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

Ketahui lebih lanjut tentang penggunaan Laravel Swagger

WBOY
Lepaskan: 2022-04-11 20:54:10
ke hadapan
4281 orang telah melayarinya

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"
Salin selepas log masuk

Gunakan:

php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider"
php artisan l5-swagger:generate
Salin selepas log masuk

Isi contoh berikut untuk menjana dan kemudian lawati

/api/documentation
Salin selepas log masuk

@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"
 *     )
 * )
 */
Salin selepas log masuk

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"}
 *         }
 *     },
 * )
 */
Salin selepas log masuk

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":{}
     *         }
     *     },
     * )
     */
Salin selepas log masuk

Parameter muat naik fail

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

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"},
     *             )
     *         )
     *     ),
Salin selepas log masuk

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"}
     *             )
     *         )
     *     ),
Salin selepas log masuk

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")
     *     ),
Salin selepas log masuk

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,
 *      )
 * )
 */
Salin selepas log masuk

Penghitungan

Penghitungan Buat Skema berasingan

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

yang memetakan ke medan tertentu dalam model

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

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"
 *      ),
Salin selepas log masuk

, 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")
     *         )
     *     ),
Salin selepas log masuk
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,
 *       ),
 *     )
 *   }
 * )
 */
Salin selepas log masuk
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"
 * )
 */
Salin selepas log masuk
Tambah

security={{"api_key": {}}},
Salin selepas log masuk
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;
}
Salin selepas log masuk
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!

Label berkaitan:
sumber:csdn.net
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan