Abstrak: Dalam pengembangan proyek, sering diharapkan dipisahkan dari ujung depan dan belakang, yaitu, pengembang ujung belakang sering perlu menghasilkan sejumlah besar antarmuka layanan. Apakah itu Java atau PHP dan bahasa lain, penyedia antarmuka sering kali perlu menghabiskan sejumlah upaya untuk menulis dokumen antarmuka, seperti alamat antarmuka A, situasi parameter yang perlu dilewati, format data JSON dari nilai pengembalian, dan deskripsi masing -masing bidang. Tentu saja, itu juga perlu mempertimbangkan header permintaan HTTP, meminta konten dan informasi lainnya. Ketika proyek berkembang dengan cepat dan berulang dengan cepat, output antarmuka oleh backend sering menghadapi masalah seperti modifikasi dan perbaikan, yang juga berarti bahwa dokumen antarmuka juga harus disesuaikan sesuai. Pemeliharaan dan keterbacaan dokumen antarmuka sangat berkurang.
Karena dokumen antarmuka membutuhkan pemeliharaan energi dan komunikasi tatap muka yang tepat, mengapa kita tidak memikirkan solusi? Pertama: Anda tidak perlu menulis dokumen antarmuka; Kedua: Ketika front-end dan back-end mengkomunikasikan masalah antarmuka, dapatkah back-end menyediakan URL? Sebutkan semua antarmuka layanan yang dapat dipanggil dalam URL ini, dan daftarkan parameter dan deskripsi nilai pengembalian di setiap antarmuka layanan. Ketiga: Jika antarmuka back-end dapat mensimulasikan panggilan, semua masalah akan diselesaikan. Dalam artikel ini, kami akan fokus pada menjelaskan kerangka kerja Swagger2 yang terintegrasi di Sringboot.
1.1. Tambahkan ketergantungan Swagger2
Tambahkan dependensi berikut ke file pom.xml proyek.
<dependency> <GroupId> io.springfox </groupid> <ArTifactId> springfox-swagger2 </artifactid> <version> 2.7.0 </version> </dependency> <dependency> <roupid> IO.springfox </groupid> <ArtiFacTID> Springfox-springfox-ui.
Pertama, kita perlu membuat kelas startup, kodenya adalah sebagai berikut:
@SpringbootApplicationPublic Class Application {public static void main (string [] args) {springApplication.run (application.class, args); }}Kemudian buat kelas konfigurasi baru untuk Swagger2 di direktori level yang sama dari kelas di atas sebagai berikut:
@Configuration @enableSwagger2public class swagger2 {@bean docket public createrestapi () {return new dapet (documentationType.swagger_2) .apiinfo (apiinfo ()) .sharena () .apis (requesthandlectors.basEpackage ("com.shareneni (). .membangun(); } private apiInfo apiInfo () {return new ApiInfoBuilder () .title ("Ikuti berbagi NIU untuk mempelajari kursus Seri Analisis Kode Sumber Springboot") .Description ("Untuk lebih banyak artikel terkait boot musim semi, silakan Bagikan NIU's Blog") .termsofserviceUrl ("http: http:/shar." .contact ("niu") .license ("Hak Cipta 2017-2018 Berbagi NIU") .Version ("1.0") .build (); }}@Configuration telah merumuskan bahwa pegas harus memuat kelas ini, dan @enableSwagger2 anotasi harus mengaktifkan fungsi Swagger.
Apiinfo di atas pada akhirnya akan ditampilkan di ujung depan. Kami menggunakan paket pemindaian untuk mengonfigurasi konfigurasi, yaitu, requesthandlerselectors.basepackage. Pengendali dalam paket ini dan subpackage pada akhirnya menghasilkan dokumen API. (Kecuali untuk permintaan yang ditentukan oleh anotasi @Apiignore).
1.2. Menambahkan instruksi dokumentasi
Setelah deklarasi kelas di atas, kita benar -benar dapat menyebutnya secara langsung, tetapi untuk meningkatkan keterbacaan dokumen, kita masih perlu menambahkan beberapa instruksi ke antarmuka. Mari kita tulis pengontrol terlebih dahulu sebagai berikut:
@Restcontroller@requestMapping (value = "/users") kelas publik userController {peta statis <long, user> users = collections.synchronizedMap (hashmap baru <long, user> ()); static {pengguna pengguna = pengguna baru (); user.setage (18); user.setid (1L); user.setname ("aa"); Users.put (1L, pengguna); } @ApiOperation (value = "Get All User List", notes = "") @RequestMapping (value = {""}, Method = requestMethod.get) Daftar publik <user> getUserList () {List <User> r = ArrayList baru <user> (Users.values ()); mengembalikan r; } @ApiOperation(value="Create a new user", notes="Create a user from the User object") @ApiImplicitParam(name = "user", value = "User detailed entity user", required = true, dataType = "User") @RequestMapping(value="", method=RequestMethod.POST) public String postUser(@RequestBody User user) { users.put(user.getId(), pengguna); mengembalikan "kesuksesan"; } @ApiOperation(value="get user details", notes="get user details based on the id of the url") @ApiImplicitParam(name = "id", value = "user ID", required = true, dataType = "Long") @RequestMapping(value="/{id}", method=RequestMethod.GET) public User getUser(@PathVariable Long id) { return users.get(id); } @ApiOperation (value = "Perbarui detail pengguna", notes = "Tentukan objek pembaruan menurut URL ID") @ApIImplicitParams ({@apiImplicitParam (name = "id", value = "ID pengguna", wajib = datatype = "Long"), @ApiImplicitParam (name = "name", value ", value =" long ", @ApIImplicitparam (name =" name ", value", value = datype = "long", @ApiImplicitparam (name = "name =" value ", value = datype = detail =" @ApIImplicitParam (name = "name", value ", value) detail =" long " @RequestMapping (value = "/{id}", Method = requestMethod.put) Public String PutUser (@PathVariable Long ID, User @RequestBody User) {user u = user.get (id); u.setname (user.getname ()); u.setage (user.getage ()); Users.put (id, u); mengembalikan "kesuksesan"; } @ApiOperation(value="Delete existing users", notes="Specify the delete object according to the id of the url") @ApiImplicitParam(name = "id", value = "User ID", required = true, dataType = "Long") @RequestMapping(value="/{id}", method=RequestMethod.DELETE) public String deleteUser(@PathVariable Long id) { Users.remove (ID); mengembalikan "kesuksesan"; }} @Apioperation: Digunakan untuk menggambarkan fungsi antarmuka ini. Anotasi ini dapat menjelaskan tanggung jawab antarmuka, informasi header pengembalian, metode permintaan metode ("dapatkan", "head", "post", "put", "hapus", "opsi" dan "patch"), protokol (http, https, ws, wss), dan kode status http.
@ApIImplicitParam: Digunakan untuk menambahkan deskripsi ke parameter. Anda dapat mengatur nama parameter, apakah itu item yang diperlukan, informasi deskripsi parameter, apakah itu hanya baca, dll.
Setelah kode di atas dikirimkan, mulailah Springboot dan kunjungi http://127.0.0.1:8080/swagger-ui.html seperti yang ditunjukkan pada gambar di bawah ini:
Gambar di atas dibagi menjadi dua bagian. Bagian atas dikonfigurasi melalui kelas Swagger2, dan bagian bawah adalah dokumen antarmuka di kelas UserController.
Di sini kami menggunakan /pengguna sebagai contoh untuk menggambarkan:
Klik /Pengguna Seperti yang ditunjukkan pada gambar berikut:
Titik kuning di atas menunjukkan data sampel yang dikembalikan oleh antarmuka ini. Artinya, struktur data pengguna. Jenis Konten Respons: Informasi header yang dikembalikan oleh antarmuka. Klik Coba. Seperti yang ditunjukkan di bawah ini:
Header Baody, Code, dan Response yang dikembalikan oleh antarmuka ini telah berhasil dikembalikan.
Meringkaskan
Di atas adalah metode mengintegrasikan kerangka kerja Swagger2 di Springboot yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!