คำนำ
Swagger ความหมายของจีน "กลืน" มันเป็นเฟรมเวิร์ก API ที่ทรงพลังการรวมกันนั้นง่ายมากไม่เพียง แต่ให้การตรวจสอบเอกสารออนไลน์เท่านั้น
นอกจากนี้ยังมีเอกสารออนไลน์ นอกจากนี้ Swagger นั้นง่ายต่อการสร้าง API แบบพักผ่อน
Swagger เป็นชุดเครื่องมือโอเพ่นซอร์สที่สร้างขึ้นรอบ ๆ ข้อกำหนด OpenAPI เพื่อช่วยออกแบบสร้างสร้างเอกสารและใช้ REST APIs
พูดง่ายๆก็คือการอำนวยความสะดวกในการทดสอบอินเทอร์เฟซที่เหลือในพื้นหลังและใช้การอัปเดตแบบไดนามิกเมื่อเราอยู่ในอินเทอร์เฟซพื้นหลัง
หลังจากการแก้ไข Swagger สามารถอัปเดตโดยอัตโนมัติโดยไม่จำเป็นต้องรักษาอินเทอร์เฟซนี้เพื่อทดสอบตามที่คุณคิด
Swagger ระบุผ่านคำอธิบายประกอบว่าอินเทอร์เฟซจะสร้างเอกสารรวมถึงชื่ออินเตอร์เฟสวิธีการขอพารามิเตอร์ข้อมูลส่งคืน ฯลฯ
<Ependency> <sderctId> io.springfox </groupId> <ratifactid> SpringFox-Swagger2 </artifactid> <sersion> 2.7.0 </version> </การพึ่งพา> <predency> <roupid> io.springfox </GroupId>
ผ่านคำอธิบายประกอบ @Configuration มันบ่งชี้ว่ามันเป็นคลาสการกำหนดค่าและ @enableswagger2 เปิดใช้งาน swagger2
การกำหนดค่า apiinfo () ข้อมูลพื้นฐานบางอย่าง APIS () ระบุว่าแพ็คเกจสแกนจะสร้างเอกสาร
หลังจากสร้างใบปะหน้าผ่านฟังก์ชั่น createrestapi แล้ว apiinfo () ใช้ข้อมูลพื้นฐานของ API (ข้อมูลพื้นฐานเหล่านี้จะแสดงในหน้าเอกสาร) ฟังก์ชั่น SELECT () ส่งคืนอินสแตนซ์ ApisElectorBuilder เพื่อควบคุมอินเทอร์เฟซที่สัมผัสกับ Swagger สำหรับการแสดงผล ตัวอย่างนี้ใช้พา ธ แพ็คเกจสแกนที่ระบุไว้เพื่อกำหนด Swagger จะสแกน API ทั้งหมดที่กำหนดโดยคอนโทรลเลอร์ภายใต้แพ็คเกจและสร้างเนื้อหาเอกสาร (ยกเว้นคำขอที่ระบุโดย @apiignore)
แพ็คเกจ com.lance.learn.springbootswagger.configuration; นำเข้า org.springframework.context.annotation.bean; นำเข้า org.springframework.context.annotation.configuration; นำเข้า Springfox.documentation.builders.apiinfobuilder Springfox.documentation.builders.requesthandlerselectors นำเข้า Springfox.documentation.service.apiinfo; นำเข้า Springfox.documentation.service.contact; นำเข้า Springfox.documentation.spi.documentationType Springfox.documentation.swagger2.annotations.enableswagger2;/*** @author Lance (zyh)* @function swagger เริ่มต้นการกำหนดค่าคลาส* @date 2018-07-09 21:24*/ @configuration @enablewagger2public แพ็คเกจ ฯลฯ * @return */@bean Public Docket Createrestfulapi () {ส่งคืนใบปะหน้าใหม่ (DocumentyType.swagger_2) .pathmapping ("/"). select () .apis (requesthandlerselectors.basepackage address.paths (pathselectors.any ()) .build (); } /** * สร้างฟังก์ชั่นข้อมูลโดยละเอียดของเอกสาร API, หมายเหตุหมายเหตุใดหมายถึง * @return * /Private Apiinfo apiinfo () {ส่งคืน apiinfobuilder ใหม่ () // title.title ("การทดสอบการบูตฤดูใบไม้ผลิ "http://www.cnblogs.com/zhangyinhua/", "[email protected]")) // version number.version ("1.0") // คำอธิบาย ("คำอธิบาย API") .build (); - คำอธิบายส่วนใหญ่มาจากฟังก์ชั่นการตั้งชื่อ ฯลฯ และไม่เป็นมิตรกับผู้ใช้ เรามักจะต้องเพิ่มคำแนะนำบางอย่างเพื่อเพิ่มเนื้อหาของเอกสาร
ดังที่แสดงไว้ด้านล่างเราเพิ่มคำแนะนำใน API ผ่านคำอธิบายประกอบ @apioperation และใช้ @apiimplicitparams และ @apiimplicitparam
คำอธิบายประกอบเพื่อเพิ่มคำอธิบายลงในพารามิเตอร์
1) ตัวอย่าง 1
แพ็คเกจ com.lance.learn.springbootswagger.controller; นำเข้า com.lance.learn.springbootswagger.bean.book; นำเข้า io.swagger.annotations.apiimplicitparam; นำเข้า io.swagger.annotations.apiimplication io.swagger.annotations.apioperation; นำเข้า org.springframework.web.bind.annotation. *; นำเข้า Springfox.documentation.annotations.apiignore; นำเข้า Java.util. *;/** * @author Lance (zyh) * @function = "/BookCurd") BookController ชั้นเรียนสาธารณะ {MAP <Long, Book> Books = Collections.synchronizedMap (HashMap ใหม่ <Long, Book> ()); @apioperation (value = "รับรายการหนังสือ", notes = "รับรายการหนังสือ") @requestmapping (value = {""}, method = requestMethod.get) รายการสาธารณะ <book> getBook () {รายการ <book> book = new ArrayList <> (books.values (); หนังสือคืน; } @apioperation (value = "สร้างหนังสือ", notes = "สร้างหนังสือ") @apiimplicitparam (name = "book", value = "หนังสือรายละเอียดของหนังสือ", จำเป็น = true, datatype = "book") @requestmapping (value = "", method = requestmethod.post กลับ "ความสำเร็จ"; } @apioperation (value = "รับข้อมูลรายละเอียดเกี่ยวกับหนังสือ", notes = "รับข้อมูลรายละเอียดตามรหัสของ url") @apiimplicitparam (name = "id", value = "id", จำเป็น = true, datatype = "long", paramType = "paramtoD id) {return books.get (id); } @apioperation (value = "ข้อมูลอัปเดต", notes = "ระบุข้อมูลการอัปเดตหนังสือตามรหัสของ URL") @apiimplicitparams ({@apiimplicitparam (name = "id", value = "book id", name = name = true " = "หนังสือ")}) @RequestMapping (value = "/{id}", method = requestMethod.put) สตริงสาธารณะ putuser (@PathVariable Long ID, @requestbody Book Book) {book book1 = books.get (id); book1.setName (book.getName ()); book1.setPrice (book.getPrice ()); books.put (id, book1); กลับ "ความสำเร็จ"; } @apioperation (value = "ลบหนังสือ", notes = "ระบุการลบหนังสือตามรหัสของ url") @apiimplicitparam (name = "id", value = "รหัสหนังสือ", จำเป็น = true, datatype = "long", paramType = "pathd) DELETEUSER (@PathVariable Long ID) {books.Remove (id); กลับ "ความสำเร็จ"; } @apiignore // ใช้คำอธิบายประกอบนี้เพื่อละเว้น api @requestmapping นี้ (value = "/hi", method = requestmethod.get) สตริงสาธารณะ jSontest () {return "สวัสดีคุณ!"; -2) ตัวอย่าง 2
แพ็คเกจ com.lance.learn.springbootswagger.controller; นำเข้า com.lance.learn.springbootswagger.bean.user; นำเข้า io.swagger.annotations.apiimplicitparam; นำเข้า io.swagger.annotations.apiimplication io.swagger.annotations.apioperation; นำเข้า org.springframework.web.bind.annotation. *; นำเข้า java.util. *;/** * @author lance (zyh) * @function * @date 2018-07-09 22:00 แผนที่ <ยาวผู้ใช้> ผู้ใช้ = คอลเลกชัน SynchronizedMap (ใหม่ HashMap <Long, User> ()); @apioperation (value = "รับรายชื่อผู้ใช้", notes = "") @RequestMapping (value = {""}, method = requestMethod.get) รายการสาธารณะ <ผู้ใช้> getUserList () {รายการ <ผู้ใช้> r = new ArrayList <ผู้ใช้> (ผู้ใช้ Return R; } @apioperation (value = "สร้างผู้ใช้", notes = "สร้างผู้ใช้จากวัตถุผู้ใช้") @apiimplicitparam (name = "user", value = "ผู้ใช้รายละเอียดผู้ใช้เอนทิตีผู้ใช้", จำเป็น = จริง, datatype = "user") @requestmapping (value = " กลับ "ความสำเร็จ"; } @apioperation (value = "รับรายละเอียดผู้ใช้", notes = "รับรายละเอียดผู้ใช้ตามรหัสของ url") @apiimplicitparam (name = "id", value = "id ผู้ใช้", จำเป็น = จริง, datatype = "long") @requestmapping (value = "/id}" } @apioperation (value = "อัปเดตรายละเอียดผู้ใช้", notes = "ระบุวัตถุอัปเดตตาม ID ของ URL และอัปเดตรายละเอียดผู้ใช้ตามข้อมูลผู้ใช้ที่ส่งผ่าน") @apiimplicitparams ({@apiimplicitparam (name = "id", value = "id iderities = true, dataType = "user")}) @RequestMapping (value = "/{id}", method = requestMethod.put) สตริงสาธารณะ putuser (@PathVariable Long ID, @RequestBody ผู้ใช้) {ผู้ใช้ U = ผู้ใช้ใหม่ (); users.put (id, u); กลับ "ความสำเร็จ"; } @apioperation (value = "ลบผู้ใช้", notes = "ระบุวัตถุลบตาม ID ของ url") @apiimplicitparam (name = "id", value = "ผู้ใช้ ID", จำเป็น = true, datatype = "Long") @RequestMapping (value = "/{id}" ผู้ใช้ลบ (id); กลับ "ความสำเร็จ"; -https://github.com/lancetobigdata/springbootlearning/tree/develop/springboot-swagger
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com