Vorwort
Prahlerei, die chinesische Bedeutung von "Swallow". Es ist ein leistungsstarkes API -Framework, seine Integration ist sehr einfach und bietet nicht nur Online -Dokumentationsüberprüfung,
Außerdem wird Online -Dokumentation bereitgestellt. Darüber hinaus ist Swagger leicht zu erstellende APIs im Stil zu bauen.
Swagger ist eine Reihe von Open -Source -Tools, die in der OpenAPI -Spezifikation basieren, um REST -APIs zu entwerfen, zu bauen, zu dokumentieren und zu verwenden.
Einfach ausgedrückt scheint es zu ermöglichen, die erholsame Schnittstelle im Hintergrund zu testen und dynamische Updates zu implementieren, wenn wir uns in der Hintergrundschnittstelle befinden.
Nach der Änderung kann Swagger automatisch aktualisieren, ohne dass diese Schnittstelle für das Testen wie Sie denken.
Swagger gibt durch Annotation an, dass die Schnittstelle ein Dokument generiert, einschließlich Schnittstellenname, Anforderungsmethode, Parameter, Rückgabeinformationen usw.
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version></dependency><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version></dependency>
Durch die Annotation von @Configuration zeigt sie an, dass es sich um eine Konfigurationsklasse handelt, und @enableWagger2 aktiviert Swagger2.
apiInfo () Konfiguration Einige grundlegende Informationen. APIS () gibt an, dass das gescannte Paket ein Dokument generiert.
Nach dem Erstellen der Docket -Bean über die Funktion "Creatreestapi" verwendet APIInfo () die grundlegenden Informationen der API (diese grundlegenden Informationen werden auf der Dokumentseite angezeigt). Die Funktion Select () gibt eine Apiselektorbuilderinstanz zurück, um zu steuern, welche Schnittstellen der Anzeige für die Anzeige ausgesetzt sind. In diesem Beispiel wird der angegebene gescannte Paketpfad verwendet, um zu definieren. Swagger scannt alle vom Controller unter dem Paket definierten APIs und generiert Dokumentinhalte (mit Ausnahme der von @APIIGNORE angegebenen Anforderung).
paket com.lance.learn.springbootswagger.configuration; import org.springframework.context.annotation.bean; import org.springframework.context.annotation Springfox.Documentation.builders.RequestHandlerSelectors; importfox.documentation.service.apiinfo; importfox.documentation.service.Contact; importfox.documentation.spi.documentationTyp; springfox.documentation.swagger2.Annotations.EnablesWagger2;/*** @Author Lance (Zyh)* @Function Swagger Startup-Konfiguration Klasse* @date 2018-07-09 21:24*/ @configuration @enable2Public Class Swaggerconfiguration {/** *** *** Swagger, Sie können eine grundlegende Swagger-Konfiguration konfigurieren. packages, etc. * @return */ @Bean public Docket createRestfulApi(){ return new Docket(DocumentationType.SWAGGER_2) .pathMapping("/") .select() .apis(RequestHandlerSelectors.basePackage("com.lance.learn.springbootswagger.controller")) //Expose the package path of the interface address.Paths (pathSelectors.anan ()) .build (); } /** * Erstellen Sie die detaillierte Informationsfunktion des API -Dokuments, beachten Sie, welche Annotation auf * @return * /private apiInfo apiinfo () {neue apiinfobuilder () // Page title.title ("FROND SOFT TEST RETTURE, um restvolle API mit Swagger2") //crate.Contact(New -Kontakt zu erstellen ("LANVETOBIGDATA", ("LANVETOBIGDATA", ("LANVETOBIGDATA", ("LANVETOBIGDATA", " "http://www.cnblogs.com/zhangyinhua/", "[email protected]")) // Versionsnummer.version ("1.0") // Beschreibung ("API Beschreibung") .build (); }} Beschreibungen stammen hauptsächlich von Benennungsfunktionen usw. und sind nicht benutzerfreundlich. Normalerweise müssen wir einige Anweisungen hinzufügen, um den Inhalt des Dokuments zu bereichern.
Wie unten gezeigt, fügen wir der API über @apioperation Annotation Anweisungen hinzu und verwenden @APIimPlictCarams und @APiimPlictCaram
Annotation, um den Parametern Beschreibung hinzuzufügen.
1) Beispiel 1
Paket com.lance.learn.springbootswagger.controller; import com.lance.learn.springbootswagger.bean.book; import io.swagger.Annotations.apiimplicitParam; Import IO.Swagger.Annotations.apiimPlictarams; io.swagger.annotations.apioperation; import org.springframework.web.bind.annotation. */@RastController@requestMapping (value = "/bookCurd") public class bookController {map <long, book> books = collections.synchronizedMap (neuer Hashmap <lang, book> ()); @APIOperation (value = "Bookliste erhalten", Notes = "Buchliste Rückbuch; } @Apioperation (value = "ein Buch erstellen", Notizen = "Ein Buch erstellen") @APIimPlictParam (name = "book", value = "book detailled Entity", fordert = true, DataType = "book") @RequestMapping (value = ", method = requestMethod.post) public starken postbook (@RequestBook) {book. zurück "Erfolg"; } @ApiOperation(value="get detailed information on the book", notes="get detailed information based on the id of the url") @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "Long",paramType = "path") @RequestMapping(value="/{id}", method=RequestMethod.GET) public Book getBook(@PathVariable Long id) {return books.get (id); } @Apioperation (value = "Information aktualisieren", Notes = "Geben Sie Update -Buchinformationen an, basierend auf der ID der URL") @APIimPlicitParams ({@APIImplicitParam (name = "id", value = "book id", fordert = true, DataType = "Long", paramtype = pathing = @APIIMPICIPICAM (NAMEDPARAM ", @APIIMPLICT (NAMISIGKEIT", @APIIMPLICT (NAMEPARAM ", @APIIMPLICT (NAMEDPARAM", @APIIMPLICT (NAMEDPARAM ", @APIIMPLICT (NAMEDPARAM), NACHSUCKEN, AUFITÄTIGS. DataType = "book")}) @RequestMapping (value = "/{id}", method = requestMethod.put) public String putuser (@PathVariable Long ID, @RequestBody Book) {book book = books.get (id); book1.setName (book.getName ()); book1.setPrice (book.getPrice ()); books.put (id, book1); zurück "Erfolg"; } @Apioperation (value = "Buch delete", Notes = "Löschung von Büchern basierend auf der ID der URL") @APIimPlictParam (name = "id", value = "book id", fordert = true, dataType = "long", paramtype = "path") @RequestMaping (Value = "/{{id}", method = usw. DeleteUser (@PathVariable Long id) {books.remove (id); zurück "Erfolg"; } @Apiignore // Verwenden Sie diese Annotation, um diese API @RequestMapping zu ignorieren (value = "/hi", method = requestMethod.get) public String jSontest () {return "hi Sie!"; }}2) Beispiel 2
Paket com.lance.learn.springbootswagger.controller; import com.lance.learn.springbootswagger.bean.user; import io.swagger io.swagger.Annotations.apioperation; import org.springframework.web.bind.annotation. *; import Java.util. statische Karte <lang, user> user = collections.synchronizedMap (neuer Hashmap <lang, user> ()); @APIOperation (value = "Benutzerliste erhalten", Notes = "") @RequestMapping (value = {""}, method = requestMethod.get) publiclist <Unters> getUerList () {List <Unter> r = new ArrayList <Unter <Unter> (user.Values ()); return r; } @Apioperation (value = "Benutzer erstellen", Notizen = "Benutzer aus dem Benutzerobjekt erstellen") @APIimPlictaram (name = "user", value = "Benutzer detaillierte Entität Benutzer", fordert = true, DataType = "Benutzer") @RequestMapping (value = "", method = user. zurück "Erfolg"; } @Apioperation (value = "Benutzerdetails erhalten", Notizen = "Benutzerindetails basierend auf der ID der URL") @APIimPlictaram (name = "id", value = "Benutzer id", fordert = true, DataType = "Long") @RequestMapping (value = "/{id}, methodyMethod.get). } @Apioperation (value = "Benutzerdetails aktualisieren", Notizen = "Aktualisieren Sie die Aktualisierungsobjekte basierend auf der ID der URL und aktualisieren Sie Benutzerdetails basierend auf den übertragenen Benutzerinformationen") @APIimPlictarams ({@apiimPlictParam) Benutzer ", fordert = true, DataType =" Benutzer ")}) @RequestMapPing (value ="/{id} ", method = requestMethod.put) public String putuser (@PathVariable Long ID, @RequestBody -Benutzer) {user u = new User (); user.put (id, u); zurück "Erfolg"; } @Apioperation (value = "Benutzer delete", Notes = "Löschen Sie das Objekt gemäß der ID der URL") @apiimPlictParam (name = "id", value = "Benutzer id", fordert = true, DataType = "Long") @RequestMapping (value = "/{{{{|, methodaType). user.remove (id); zurück "Erfolg"; }}https://github.com/lancetobigdata/springbootlearning/tree/develop/springboot-swagger
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Referenzwert für das Studium oder die Arbeit eines jeden hat. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen. Vielen Dank für Ihre Unterstützung bei Wulin.com.