Swagger adalah kerangka kerja preskriptif dan lengkap untuk membangun, mendeskripsikan, memanggil, dan memvisualisasikan layanan web gaya RESTful.
Tujuan keseluruhannya adalah agar klien dan sistem file diperbarui dengan kecepatan yang sama dengan server. Metode, parameter, dan model file terintegrasi erat ke dalam kode sisi server, memungkinkan API tetap sinkron setiap saat. Swagger tidak pernah membuatnya lebih mudah untuk menerapkan dan menggunakan API yang kuat.
resensi
Pertama, buat proyek baru ASP.NET Core 3.1 dan gunakan nuget untuk menginstal paket Swashbuckle.AspNetCore dengan perintah berikut:
Konfigurasikan layanan Swagger di file startup.cs sebagai berikut:
Metode ConfigureServices
Konfigurasikan metode
Buat pengontrol Pengujian baru dengan kode berikut:
Objek model parameter produk Antarmuka Buat Pengontrol Uji adalah sebagai berikut:
Setelah memulai proyek, akses:http://localhost:18979/swagger/index.html, seperti yang ditunjukkan pada gambar di bawah ini:
swagger.json Isinya adalah sebagai berikut:
{ "openapi": "3.0.1", "info": { "title": "API Saya", "versi": "v1" }, "jalur": { "/api/Test/Create": { "post": { "tags": [ "Uji" ], "requestBody": { "konten": { "application/json": { "skema": { "$ref": "#/komponen/skema/Produk" } }, "text/json": { "skema": { "$ref": "#/komponen/skema/Produk" } }, "application/*+json": { "skema": { "$ref": "#/komponen/skema/Produk" } } } }, "tanggapan": { "200": { "description": "Keberhasilan", "konten": { "text/plain": { "skema": { "type": "string" } }, "application/json": { "skema": { "type": "string" } }, "text/json": { "skema": { "type": "string" } } } } } } } }, "komponen": { "skema": { "Informasi": { "type": "objek", "properti": { "isDiskon": { "jenis": "boolean" }, "isVip": { "jenis": "boolean", "nullable": true } }, "additionalProperties": false }, "Produk": { "type": "objek", "properti": { "nama": { "type": "string", "nullable": true }, "dinonaktifkan": { "jenis": "boolean" }, "info": { "$ref": "#/komponen/skema/Informasi" } }, "additionalProperties": false } } }
}
Kami menemukan bahwa tipe Boolean dan tipe Boolean yang dapat diterima null default ke: true,Dalam pengembangan harian, jika bool tidak ditetapkan, defaultnya harus false, dan jenis null harus default ke null, kami mencoba menggunakan keangkuhan untuk mensimulasikan komitmen, jika parameternya tidak diperhatikan,Kecelakaan rentan。 (Minggu lalu, saya menggunakan swagger untuk mensimulasikan bahwa parameter bool benar secara default, menyebabkan pesan WeChat didorong ke semua orang.)
Bagaimana cara menetapkan jenis Boolean ke false secara default? Bagaimana dengan jenis null yang ditetapkan null?
Buat kelas baru yang mewarisi dari ISchemaFilter, dan kodenya adalah sebagai berikut:
Dan saat menambahkan layanan swagger, tambahkan filter AddSwaggerGen sebagai berikut:
Untuk beberapa bidang bool khusus, nilai default perlu diatur ke true dan dapat ditambahkan[DefaultValue(true)]Ciri-cirinya adalah sebagai berikut:
{ "name": "string", "dinonaktifkan": benar, "info": { "isDiscount": salah, "isVip": null }
} swagger.json Filenya adalah sebagai berikut:
{ "openapi": "3.0.1", "info": { "title": "API Saya", "versi": "v1" }, "jalur": { "/api/Test/Create": { "post": { "tags": [ "Uji" ], "requestBody": { "konten": { "application/json": { "skema": { "$ref": "#/komponen/skema/Produk" } }, "text/json": { "skema": { "$ref": "#/komponen/skema/Produk" } }, "application/*+json": { "skema": { "$ref": "#/komponen/skema/Produk" } } } }, "tanggapan": { "200": { "description": "Keberhasilan", "konten": { "text/plain": { "skema": { "type": "string" } }, "application/json": { "skema": { "type": "string" } }, "text/json": { "skema": { "type": "string" } } } } } } } }, "komponen": { "skema": { "Informasi": { "type": "objek", "properti": { "isDiskon": { "jenis": "boolean", "default": false }, "isVip": { "jenis": "boolean", "default": null, "nullable": true } }, "additionalProperties": false }, "Produk": { "type": "objek", "properti": { "nama": { "type": "string", "nullable": true }, "dinonaktifkan": { "jenis": "boolean", "default": true }, "info": { "$ref": "#/komponen/skema/Informasi" } }, "additionalProperties": false } } }
} (Akhir)
|