Swagger-это стандартизированная и полная структура для генерации, описания, вызова и визуализации веб-сервисов в стиле Restful. Общая цель состоит в том, чтобы сделать обновление клиента и файловой системы с той же скоростью, что и сервер. Методы файлов, параметры и модели тесно интегрированы в код на стороне сервера, что позволяет API всегда синхронизировать.
Swagger никогда не было проще в развертывании, управлении и использовании мощных API. ОК, приведенное выше официальное заявление, я скопировал его напрямую. На мой взгляд, Swagger - это менеджер по интерфейсу. В прошлом мы обычно писали интерфейсы в мире, но есть проблема, на которую нам нужно полагаться на сторонние инструменты при тестировании. Интерфейс Get в порядке, и он открывается непосредственно браузером. Сообщение может полагаться только на другие инструменты. Swagger может напрямую генерировать интерфейсные документы (Javaee) через аннотации в коде. Большинство людей используют этот метод, и он напрямую интегрируется в проект для облегчения просмотра участников, а также может тестировать напрямую. Кроме того, интерфейс Swagger также хорош. Может быть, поэтому я решил использовать Swagger. Стиль спокойствия, который непосредственно упоминается чиновником, не является спокойным. Стиль интерфейсы также могут быть использованы. Конечно, у Swagger есть еще один способ писать инструкции по интерфейсу вручную. Преимущество состоит в том, что в коде есть только код, потому что после добавления аннотации интерфейса Swagger в код объем кода все еще увеличивается. Конечно, недостаток заключается в том, что после того, как вы изменили код, вы должны изменить интерфейсный документ.
Springmvc очень прост в интеграции Springfox-Swagger2 и Springfox-Swagger-UI, только два шага:
(1) Добавить зависимости в POM
<Depoydency> <groupid> io.springfox </GroupId> <ArtifactId> Springfox-swager-ui </artifactid> <serview> $ {Springfox-swager.version} </version> </repertive> <dependency> <groupfox> io.springfox </artifactid> springfox> </ortifactd> </artifactid> </artifactid> <версия> $ {springfox-swagger.version} </version> </vehyederian>(2) Добавить класс конфигурации чванства:
@Configuration @entableswger2 @enablewebmvc @componentscan ("com.xxx.controller") открытый класс SwaggerConfig {} Затем вы можете увидеть всю информацию о интерфейсе в проекте через http: //localhost/swagger-ui.html, и вы можете увидеть данные JSON через http: // localhost/v2/api-docs.
Но как я могу отключить эти документы API в производственной среде? Я попробовал много способов и, наконец, нашел простой и практический метод:
@Configuration @entableswger2 @enablewebmvc @componentscan ("com.xxx.controller") открытый класс SwaggerConfig {@autowired configservice configservice; @Bean public docket CustomDocket () {if (configservice.getServerenv () == serverenvenum.online) {return New Docket (DocumentType.swager_2) .apiinfo (apiinfoonline ()). Select () .paths (pathselectors.none ()//, если это онлайн -среда, добавляя их, и не использует. .строить(); } else {return new Docket (documentType.swagger_2) .apiinfo (apiinfo ()); }} private apiinfo apiinfo () {return new apiinfobuilder () .title ("xxx system") .description ("xxx System Interface") .license ("") .licenseUrl ("" ") .termesofServiceurl (") .Version ("1.0.0") .contact (")."). .строить(); } private apiinfo apiinfoonline () {return new apiinfobuilder () .title ("") .description ("") .license ("") .licenseUrl ("") .TermsOfServiceUrl (") .version (") .Contact (новый контакт ("", ",", ",", ","). }} Хотя страница http: //localhost/swagger-ui.html все еще может быть доступна, контента нет, включая http: // localhost/v2/api-docs.
Там должен быть лучший способ!
Ссылка: //www.vevb.com/article/135312.htm
Swagger должен быть в том же контексте, что и Springmvc, Springmvc - это просто субконтекст пружины. Если Swagger делает весеннюю контекстную нагрузку, то URL -адреса этих чванства не могут быть перехвачены с помощью перехватчика SpringMVC!
Итак, есть два решения:
При использовании аннотаций:
(1) Конфигурация Spring-MVC:
<!-Используйте аннотацию для автоматического регистрации бобов, только сканировать @controller-> <Контекст: компонент-сканирование Base-package = "com.inspur.eyun.yunbx" Использовать дефект-filters = "false"> <!-базовая упаковка, если множественная, отдельная с ","-> <контекст: включает в себя тип filter = "аннотация". Express = "org.springframework.steretype.controller"/> <context: include-filter type = "usessable" Expression = "com.inspur.eyun.yunbx.swagger.swaggerconfig"/> </context: component-scan>
Обратите внимание, что вам нужно добавить конфигурацию Swagger, и в то же время:
(2) Конфигурация пружины:
<!-Сканирование пакетов, связанное с аннотацией-> <Контекст: компонент-сканированный базовый package = "com.inspur.eyun.yunbx"> <context: exclude-filter type = "annotation" Expression = "org.springframework.steretype.controller"/> excude-filter Express = "com.inspur.eyun.yunbx.swagger.swaggerconfig"/> </context: component-scan>
Обратите внимание на исключение Swagger
(3) Конфигурация чванства:
@Configuration @entableswger2 @enablewebmvc @componentscan ("com.inspur.eyun.yunbx.controller") открытый класс SwaggerConfig {}Обратите внимание на аннотацию @configuration.
Конечно, более рекомендуемый метод - использовать метод конфигурации XML, потому что таким образом вам не нужно вводить пакет зависимости Swagger:
(1) Конфигурация Spring-MVC:
<!-Используйте аннотацию для автоматического регистрации бобов, только сканировать @controller-> <Контекст: компонент-сканирование Base-package = "com.inspur.eyun.yunbx" Использовать дефект-filters = "false"> <!-базовая упаковка, если множественная, отдельная с ","-> <контекст: включает в себя тип filter = "аннотация". Express = "org.springframework.stereotype.controller"/> </context: component-scan> <import resource = "classpath: spring-mvc-swager.xml"/>
Spring-MVC-Swagger.xml:
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi "xsi" xsi "xsi" xsi: " http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <description>SpringMVC Swagger Configuration</description> <!-- swagger configuration, production environment пусто -> <bean /> < /beans>
Примечание. Мы помещаем чванство в файл конфигурации отдельно. Если это онлайн -среда, содержимое файла пусто. Если это в автономном тестировании, Swagger настроен.
(2) Конфигурация пружины:
<!-Сканирование пакетов, связанное с аннотацией-> <Контекст: компонент-сканирование Base-package = "com.inspur.eyun.yunbx"> <Контекст: exclode-filter type = "annotation" Expression = "org.springframework.stereoty.controller"/> </context: component-scan>
(3) Конфигурация чванства:
@Enableswger2 @enablewebmvc public class swaggerconfig {@bean public docket customdocket () {return new Docket (documentType.swager_2) .apiinfo (apiinfo ()). Select () .Apis (QuiestHandLerseLectors.BasePackage ("com.inspur.yunbx .paths (pathselectors.any ()) .build (); } private apiinfo apiinfo () {return new apiinfobuilder () .title ("xxx platform") .description ("xxx platform interface") .license ("") .licenseUrl ("") .termesofServiceurl (") .version (" 1.0.0 "). .строить(); }}Примечание. Здесь мы удалили @configuration, и в то же время мы изменили наш POM и настроили несколько профильных упаковки:
pom.xml:
<!-Swagger-> <Dependency> <groupId> io.springfox </GroupId> <artifactid> Springfox-swagger2 </artifactid> <serse> $ {Springfox-swagger.version} </version> <cracpe> $ {Swagger.scope} </scope> </зависимость> <berpoys> <Group> I. <artifactid> springfox-swagger-ui </artifactid> <cerpope> $ {swagger.scope} </scope> <serse> $ {Springfox-swager-ui.version} </version> </depertive>ПРИМЕЧАНИЕ. Зависимая от области, зависимая здесь динамически. Если это онлайн -среда, мы можем установить область предоставленной области.
<Профили> <Profile> <id> dev </id> <properties> <profiles.active> dev </profiles.active> <wagger.scope> compile </swagger.scope> </operties> <compatation> <ActiveByDefaul <wagger.scope> compile </swagger.scope> </properties> </profile> <profile> <id> онлайн </id> <properties> <properties> <fripiles.active> test </profiles.active> <wagger.scope> compile.scope> </properties> </profile> <der> <dugre> </swarger.scope> </properties> </profile> <id> </id> <properties> </profile> <id> <profiles.active> Online </profiles.active> <wagger.scope> предоставлено </swagger.scope> </properties> </profile> </profiles> </profiles>
Установите разные области для зависимости Swagger через разные профили!
Примечание. В Springfox-Swagger есть ошибка. Слишком чертовски хитрость!
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.