Swagger ist ein standardisiertes und vollständiges Framework zum Generieren, Beschreiben, Anrufen und Visualisieren von Webdiensten im Stil. Das Gesamtziel ist es, das Client- und Dateisystem mit der gleichen Geschwindigkeit wie der Server zu aktualisieren. Dateimethoden, Parameter und Modelle werden eng in den serverseitigen Code integriert, sodass die API immer synchronisiert bleibt.
Swagger war noch nie einfacher, leistungsstarke APIs einzusetzen und zu verwalten und zu verwenden. OK, das obige ist die offizielle Erklärung, ich habe sie direkt kopiert. Meiner Meinung nach ist Swagger ein Interface -Dokumentmanager. In der Vergangenheit haben wir normalerweise Schnittstellen der Welt geschrieben, aber es gibt ein Problem, das wir beim Testen auf Tools von Drittanbietern verlassen müssen. Die Get -Schnittstelle ist in Ordnung und wird direkt vom Browser geöffnet. Post kann sich nur auf andere Tools verlassen. Swagger kann direkte Schnittstellendokumente (Javaee) durch die Anmerkungen im Code generieren. Die meisten Menschen verwenden diese Methode und sie ist direkt in das Projekt integriert, um die Mitglieder zum Betrachten zu erleichtern, und können auch direkt testen. Darüber hinaus ist auch die Schnittstelle von Prahlerei gut. Vielleicht habe ich deshalb beschlossen, Swagger zu verwenden. Der erholsame Stil, der direkt vom Beamten erwähnt wird, ist nicht erholsam. Stilschnittstellen können auch verwendet werden. Natürlich gibt es eine andere Möglichkeit für Swagger, Schnittstellenanweisungen manuell zu schreiben. Der Vorteil besteht darin, dass der Code nur Code hat, da der Code der Code, sobald die Swagger -Schnittstellenanschlag hinzugefügt wird, immer noch stark steigt. Natürlich ist der Nachteil, dass Sie nach dem Änderung des Codes das Schnittstellendokument ändern müssen.
SpringMVC ist sehr einfach zu integrieren Springfox-Swagger2 und Springfox-Swagger-UI, nur zwei Schritte:
(1) Fügen Sie Abhängigkeiten in POM hinzu
<De vorangestellt> <gruppe> io.springfox </GroupID> <artifactId> Springfox-Swagger-Ui </artifactId> <version> $ {Springfox-swagger.version} </Version> </abhängig> <abhängigkeit> <GroupId> io.springfox </gruppen> <artifactid> </artifactid> </artifactid> <version> $ {Springfox-Swagger.version} </Version> </abhängig>(2) Fügen Sie die Prahlerin -Konfigurationsklasse hinzu:
@Configuration @enablewagger2 @enableWebmvc @Componentscan ("com.xxx.controller") öffentliche Klasse Swaggerconfig {} Anschließend können Sie alle Schnittstelleninformationen im Projekt über http: //localhost/swagger-ui.html sehen und die JSON-Daten über http: // localhost/v2/api-docs sehen.
Aber wie deaktiviere ich diese API -Dokumente in einer Produktionsumgebung? Ich habe viele Möglichkeiten ausprobiert und schließlich eine einfache und praktische Methode gefunden:
@Configuration @enableWagger2 @enableWebmvc @Componentscan ("com.xxx.controller") Public Class SwaggerConfig {@autowired configService configService; @Bean public docket CustomDocket () {if (configService.getServerenv () == Servervenum.online) {Neue Docket (documentationType.swagger_2) .APIInfo (apiInfoonline ()) .Select (). .bauen(); } else {return New Docket (documentationType.swagger_2) .APIInfo (apiInfo ()); }} private apiInfo apiinfo () {Neue apiinfobuilder () .title ("xxx System") .Description ("xxx -Systemschnittstelle") .License (") .LicenseUrl (" ") .termsoviceurl (", ")."). ")."). ")."). .bauen(); } private apiinfo apiinfoonline () {neu apiinfobuilder () .title ("") .description ("") .License ("") .LicenseUrl (") .termsofServiceurl (" ") .version ("). }} Obwohl auf die Seite http: //localhost/swagger-ui.html weiterhin zugegriffen werden kann, gibt es keinen Inhalt, einschließlich http: // localhost/v2/api-docs.
Es sollte einen besseren Weg geben!
Referenz: //www.vevb.com/article/135312.htm
Die Prahlerei muss im gleichen Kontext wie SpringMVC sein, SpringMVC ist nur ein Unterkontext des Frühlings. Wenn Swagger die Frühlingskontextladung erstellt, können die URLs der Prahlerei nicht mit SpringMVC -Interceptor abgefangen werden!
Es gibt also zwei Lösungen:
Wenn Anmerkungen verwendet werden:
(1) Spring-MVC-Konfiguration:
<!-Verwenden Sie Annotation, um eine Bean automatisch zu registrieren, nur @Controller-> <context: component-scan base-package = "com.inspur.eyun.yunbx" Verwendung Default-filters = "false"> <!-Base-Package, wenn mehrere, separat mit ","-> <context: einbeziehung "filter type" = "annotation" "annotation" "annotation" "annotation" "annotation" "annotation" "annotation" "ungretexte", "-> <context: filter type type type" annotation "" annotation "" annotation "" endet ","-> <context: filter type type type type "annotation" Expression = "org.springFramework.steretype.Controller"/> <context: include-filter type = "zuordnbar" expression = "com.inspur.eyun.yunbx.swagger.swaggerconfig"/> </context: component-scan>
Beachten Sie, dass Sie gleichzeitig die Swagger -Konfiguration hinzufügen müssen:
(2) Federkonfiguration:
<!-Paketscanning, Annotation verwandt-> <Kontext: Komponenten-Scan-Basis-Package = "com.inspur.eyun.yunbx"> <context: schließen Sie filter type = "Annotation" Expression = "org.springFramework.steretype.controller"/> <context: exklude-filter type = "zuweisbar" zugewiesen "type" zuweisen "=" zugewiesen ". Expression = "com.inspur.eyun.yunbx.swagger.swaggerconfig"/> </context: component-scan>
Achten Sie darauf, Swagger auszuschließen
(3) Swagger -Konfiguration:
@Configuration @enablewagger2 @enableWebmvc @Componentscan ("com.inspur.eyun.yunbx.controller") öffentliche Klasse Swaggerconfig {}Beachten Sie die Annotation von @Configuration.
Die empfohlene Methode ist natürlich die Verwendung der XML -Konfigurationsmethode, da Sie auf diese Weise das Swagger -Abhängigkeitspaket nicht vorstellen müssen:
(1) Spring-MVC-Konfiguration:
<!-Verwenden Sie Annotation, um eine Bean automatisch zu registrieren, nur @Controller-> <context: component-scan base-package = "com.inspur.eyun.yunbx" Verwendung Default-filters = "false"> <!-Base-Package, wenn mehrere, separat mit ","-> <context: einbeziehung "filter type" = "annotation" "annotation" "annotation" "annotation" "annotation" "annotation" "annotation" "ungretexte", "-> <context: filter type type type" annotation "" annotation "" annotation "" endet ","-> <context: filter type type type type "annotation" Expression = "org.springframework.stereotype.Controller"/> </context: component-scan> <import ressource
Spring-MVC-Swagger.xml:
<? http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans http://www.springframework.org/schema/Beans/spring-Beansd.xsd "> <Breascription> <Breascription> <Breascription> <Breascription> leer -> <bean /> < /beans>
HINWEIS: Wir geben Prahlerei in einer Konfigurationsdatei getrennt. Wenn es sich um eine Online -Umgebung handelt, ist der Dateiinhalt leer. Wenn es sich um eine Offline -Testumgebung handelt, ist Swagger konfiguriert.
(2) Federkonfiguration:
<!-Paketscanning, Annotation verwandt-> <Context: Komponent-scan-Basis-Package = "com.inspur.eyun.yunbx"> <context: exklude-filter type = "Annotation" expression = "org.springFramework.stereotype.controller"/> </kontext: component-scan>
(3) Swagger -Konfiguration:
@EnableWagger2 @enableWebmvc Public Class SwaggerConfig {@Bean public docket CustomDocket () {return New Docket (documentationType.swagger_2) .APIInfo (apiinfo ()) .Select () .APIS (RequestHandLector.BaSepaPArtors.BaSepack ("Com.Inspur.")). .Paths (PathSelectors.anan ()) .build (); } private apiInfo apiinfo () {return New ApiInfobuilder () .title ("xxx Plattform") .Description ("XXX -Plattform") .License ("") .Licenseurl ("") .termsofServiceurl ("") .version ("1.0.0.0.0.0.0.0.0.0.0.0."). .bauen(); }}Hinweis: Hier haben wir @Configuration entfernt und gleichzeitig unseren POM geändert und mehrere Profilverpackungen konfiguriert:
pom.xml:
<!-- Swagger --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>${springfox-swagger.version}</version> <scope>${swagger.scope}</scope> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactid> Springfox-Swagger-UI </artifactId> <Scope> $ {Swagger.Scope} </scope> <version> $ {Springfox-Swagger-Ui.version} </Version> </abhängig>Hinweis: Der hier abhängige Umfang wird dynamisch festgelegt. Wenn es sich um eine Online -Umgebung handelt, können wir den Umfang der Bereitstellung festlegen.
<profiles> <profile> <id>dev</id> <properties> <profiles.active>dev</profiles.active> <swagger.scope>compile</swagger.scope> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>test</id> <properties> <profiles.active>test</profiles.active> <Swagger.Scope> Compile </Swagger.Scope> </properties> </profile> <profile> <id> online </id> <properties> <properties> <profiles <Profies.active> Online </profiles.active> <Swagger.Scope> Bereitgestellt </swagger.scope> </properties> </profile> </profile> </profile>
Setzen Sie verschiedene Bereiche für die Abhängigkeiten von Swagger durch verschiedene Profile!
Hinweis: In Springfox-Swagger.version = 2.7.0 gibt es einen Fehler, und Sie können die untere Version 2.6.1 verwenden. Zu verdammter Trick!
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.