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.
[Cadangan berkaitan: Tutorial video laravel]
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.
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
https://github.com/DarkaOnLine/L5-Swagger
composer require "darkaonline/l5-swagger"
php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider" php artisan l5-swagger:generate
Isi contoh berikut untuk menjana dan kemudian lawati
/api/documentation
@OAInfo diperlukan
/** * @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" * ) * ) */
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"} * } * }, * ) */
/** * @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":{} * } * }, * ) */
* @OA\RequestBody( * @OA\MediaType( * mediaType="multipart/form-data", * @OA\Schema( * type="object", * @OA\Property( * property="file", * type="file", * ), * ), * ) * ),
* @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"}, * ) * ) * ),
* @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"} * ) * ) * ),
* @OA\RequestBody( * description="order placed for purchasing th pet", * required=true, * @OA\JsonContent(ref="#/components/schemas/UserModel") * ),
/** * @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 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
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
* @OA\Response( * response=200, * description="successful operation", * @OA\JsonContent( * type="array", * @OA\Items(ref="#/components/schemas/UserModel"), * @OA\Items(ref="#/components/schemas/UserModel2") * ) * ),
Melalui Skema swagger, kakitangan bahagian hadapan boleh memahami maklumat struktur bahagian belakang, seperti:
/** * @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, * ), * ) * } * ) */
/** * @OA\SecurityScheme( * type="apiKey", * in="query", * securityScheme="api_key", * name="api_key" * ) */
security={{"api_key": {}}},
Anda 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
untuk lebih banyak kaedah penggunaan contoh laman web: https://github.com/zircote/swagger-php/tree/master/Examples/petstore-3.0
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; }
Atas ialah kandungan terperinci Ketahui lebih lanjut tentang penggunaan Laravel Swagger. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!