A Swagger é uma estrutura padronizada e completa para gerar, descrever, chamar e visualizar serviços da Web de estilo repouso. O objetivo geral é fazer a atualização do cliente e do sistema de arquivos na mesma velocidade que o servidor. Métodos de arquivo, parâmetros e modelos são fortemente integrados ao código do lado do servidor, permitindo que a API sempre se mantenha sincronizada.
A Swagger nunca foi tão fácil de implantar e gerenciar e usar APIs poderosas. Ok, o exposto acima é a declaração oficial, eu a copiei diretamente. Na minha opinião, Swagger é um gerenciador de documentos da interface. No passado, geralmente escrevemos interfaces no mundo, mas há um problema que precisamos confiar em ferramentas de terceiros ao testar. A interface GET está bem e é aberta diretamente pelo navegador. A postagem só pode confiar em outras ferramentas. O Swagger pode gerar diretamente documentos de interface (Javaee) através das anotações no código. A maioria das pessoas usa esse método e é diretamente integrada ao projeto para facilitar os membros para visualizar e também pode testar diretamente. Além disso, a interface do Swagger também é boa. Talvez seja por isso que eu escolhi usar arrogância. O estilo repousante mencionado diretamente pelo funcionário não é repousante. As interfaces de estilo também podem ser usadas. Obviamente, há outra maneira de Swagger escrever instruções de interface manualmente. A vantagem é que o código só possui código, porque uma vez que a anotação da interface de arrogância é adicionada ao código, a quantidade de código ainda aumenta muito. Obviamente, a desvantagem é que, depois de modificar o código, você deve alterar o documento da interface.
Springmvc é muito simples de integrar Springfox-Swagger2 e Springfox-Swagger-UI, apenas duas etapas:
(1) Adicione dependências no POM
<Depencency> <PuerpId> io.springfox </groupiD> <TRARFACTID> springfox-swagger-ui </artifactId> <versão> $ {springfox-swagger.version} </version> </dependency> <pendency> <voundid> io.springfox </grupo> artef <versão> $ {springfox-swagger.version} </versão> </dependency>(2) Adicione a classe de configuração do Swagger:
@Configuration @enablewagger2 @enablewebmvc @componentscan ("com.xxx.controller") classe pública swaggerconfig {} Em seguida, você pode ver todas as informações da interface no projeto por meio de http: //localhost/swagger-ui.html, e você pode ver os dados JSON através de http: // localhost/v2/api-docs.
Mas como faço para desativar esses documentos da API em um ambiente de produção? Tentei muitas maneiras e finalmente encontrei um método simples e prático:
@Configuration @enableswagger2 @enablewebmvc @componentscan ("com.xxx.controller") classe pública swaggerConfig {@aUTowired configservice configservice; @Bean public Docket CustomDocket () {if (configservice.getServerenv () == serverenvenum.online) {retorna new Docket (documentationType.swagger_2) .apiinfo (Apiinfoonline () .Select (). .construir(); } else {return new Docket (documentationType.swagger_2) .apiinfo (apiinfo ()); }} private apiinfo apiinfo () {return novo apiinfobuilder () .title ("system xxx") .description ("xxx system interface") .license ("") .licenseurl ("") .termofSoFurl ("") .version ("1.0 (" ") .TermSoFerCurl (" ") .version (" 1.0 (""). .construir(); } Apiinfo private apiinfoonline () {retorna novos apiinfobuilder () .title ("") .description ("") .license ("") .licenseurl ("") .termsofServiceurl ("") .version (") .contAct (novo" "" "" "" ""). }} Embora a página http: //localhost/swagger-ui.html ainda possa ser acessada, não há conteúdo, incluindo http: // localhost/v2/api-docs.
Deve haver uma maneira melhor!
Referência: //www.vevb.com/article/135312.htm
O Swagger deve estar no mesmo contexto que o SpringMVC, o SpringMVC é apenas um subcontexto da primavera. Se o Swagger fizer carga de contexto de primavera, os URLs da Swagger não poderão ser interceptados com o SpringMVC Interceptor!
Então, existem duas soluções:
Se estiver usando anotações:
(1) Configuração da mrging-MVC:
<!-Use a anotação para registrar automaticamente um feijão, digitalize apenas @Controller-> <Contexto: component-scan-package = "com.inspur.eyun.yunbx" use-default-filters = "false"> <!-package se múltiplo, separado ","-> <Contexto: incluir Filter = " Expression = "org.springframework.steretype.controller"/> <Contexto: incluir filtro type = "atribuível" expressão = "com.inspur.eyun.yunbx.swagger.swaggerConfig"/> </context: component-scan>
Observe que você precisa adicionar a configuração do Swagger e, ao mesmo tempo:
(2) Configuração da primavera:
<!-varredura de pacotes, anotação relacionada-> <Contexto: component-scan Base-package = "com.inspur.eyun.yunbx"> <Contexto: exclude filter type = "anotação" expressão = "org.springframework.steretype.Contoller"/> <Contexto: exclua-filter = "atribuível" " expressão = "com.inspur.eyun.yunbx.swagger.swaggerconfig"/> </context: component-scan>
Preste atenção em excluir a arrogância
(3) Configuração do Swagger:
@Configuration @enablewagger2 @enablewebmvc @componentscan ("com.inspur.eyun.yunbx.controller") classe pública swaggerconfig {}Observe a anotação @configuration.
Obviamente, o método mais recomendado é usar o método de configuração XML, porque dessa maneira você não precisa introduzir o pacote de dependência do Swagger:
(1) Configuração da mrging-MVC:
<!-Use a anotação para registrar automaticamente um feijão, digitalize apenas @Controller-> <Contexto: component-scan-package = "com.inspur.eyun.yunbx" use-default-filters = "false"> <!-package se múltiplo, separado ","-> <Contexto: incluir Filter = " Expression = "org.springframework.tereotype.controller"/> </context: component-scan> <importação Resource = "ClassPath: spring-mvc-swagger.xml"/>
spring-mvc-swagger.xml:
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-bean.xsd.xsdsdwork.org/schema/Beans/Sring-BeanScsd.xsd ">schema/beans/spring-bean.xsd.xsdwork.org/schema/Beans/singa-bean.xsd"> Configuração, ambiente de produção vazio -> <Bean /> </ Beans>
Nota: Colocamos o Swagger em um arquivo de configuração separadamente. Se for um ambiente on -line, o conteúdo do arquivo está vazio. Se for um ambiente de teste offline, o Swagger está configurado.
(2) Configuração da primavera:
<!-varredura de pacotes, anotação relacionada-> <Contexto: Componente-Scan Base-Package = "com.inspur.eyun.yunbx"> <Contexto: exclude filter type = "anotação" expressão = "org.springframework.tereotype.controller"/> </context: component-scan>
(3) Configuração do Swagger:
@Enablewagger2 @enablewebmvc classe pública swaggerconfig {@Bean public docket customDocket () {return new Docket (documentationtype.swagger_2) .apiinfo (apiinfo ()). .Paths (PathSelectors.any ()) .build (); } apiinfo private apiinfo () {retorna novos apiinfobuilder () .title ("xxx plataform") .description ("xxx plataform interface") .license ("") .licenseurl ("") .termsofSoSoTriceurl ("). .construir(); }}Nota: Aqui removemos @configuration e, ao mesmo tempo, modificamos nosso POM e configuramos múltiplas embalagens de perfil:
pom.xml:
<!-swagger-> <pendency> <puperid> io.springfox </groupiD> <TROTIFACTID> springfox-swagger2 </artifactId> <versão> $ {springfox-swagger.version} </versão> <COPE> $ {swagger.scope} </scope> </dependência> <TarfactId> springfox-swagger-ui </artifactId> <cope> $ {swagger.scope} </scope> <versãoNota: O escopo dependente aqui é definido dinamicamente. Se for um ambiente on -line, podemos definir o escopo fornecido.
<Files> <filid> <id> dev </id> <pertts> <files.active> dev </profiles.active> <wagger.scope> compile </swagger.scope> </souperties> </ativação> <filtByDefault> true </sittyDyDefault> </ativação> <filfiles> <diles> testF) </ideiles> testfult> testFultyiles <btyililes> TRUE </sperbyDefault> </privation> <files> <dililes> testF) </idenisttion> testFult. </swagger.scope> compile </swagger.scope> </properties> </perfil> <filid> <id> online </dod> <perties> <perties> <perfis.active> test </profiles.active> <lingager.scope> compile </scope.scope> </propriedades> </perfil> <dager.dager.scope> <Files.Active> online </profiles.active> <swagger.scope> fornecido </swagger.scope> </sperties> </filid> </files> </files>
Defina diferentes escopos para as dependências de Swagger através de diferentes perfis!
Nota: Existe um bug no springfox-swagger.version = 2.7.0, e você pode usar a versão inferior 2.6.1. Muito truque!
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.