Adicionando Swagger para testar sua api em spring boot

Odilio Noronha
RapaduraTech
Published in
2 min readJul 29, 2019

A Swagger UI fornece uma pagina que lê um documento de especificação OpenAPI e gera um site de documentação interativo. O tutorial a seguir mostra como gerar um documento de especificação OpenAPI a partir de seu projeto em spring boot.

Se ainda não possui um projeto criado e quer ver como fazer isso de maneira simples, preparei um outro tutorial extremamente simples de como inicializar o seu projeto spring https://medium.com/rapaduratech/microservices-em-java-com-spring-boot-3fc3ec75638d.

Agora que você já possui um projeto spring funcional, vamos configurar o springfox em nosso projeto

Configurando o Swagger no nosso projeto.

Vamos abrir o nosso arquivo pom.xml e vamos adicionar as dependências abaixo.

<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
<scope>compile</scope>
</dependency>

Agora vamos criar uma classe com o nome de SwaggerConfig, depois vamos deixar nossa classe com o código abaixo.

package com.crm.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport {

@Bean
public Docket productApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage(“com.crm”))
.build()
.apiInfo(metaData());

}

private ApiInfo metaData() {
return new ApiInfoBuilder()
.title(“Spring Boot REST API”)
.description(“\”Spring Boot REST API\””)
.version(“1.0.0”)
.license(“Apache License Version 2.0”)
.licenseUrl(“https://www.apache.org/licenses/LICENSE-2.0\"")
.build();
}

@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler(“swagger-ui.html”)
.addResourceLocations(“classpath:/META-INF/resources/”);

registry.addResourceHandler(“/webjars/**”)
.addResourceLocations(“classpath:/META-INF/resources/webjars/”);
}
}

Visão geral de anotações do springfox

@Api Marca uma classe como um recurso de Swagger.
@ApiImplicitParam Representa um único parâmetro em uma operação da API.
@ApiImplicitParams Um wrapper para permitir uma lista de vários objetos ApiImplicitParam.
@ApiModel Fornece informações adicionais sobre os modelos Swagger.
@ApiModelProperty Adiciona e manipula dados de uma propriedade de modelo.
@ApiOperation Descreve uma operação ou normalmente um método HTTP em um caminho específico.
@ApiParam Adiciona meta-dados adicionais para parâmetros de operação.
@ApiResponse Descreve uma possível resposta de uma operação.
@ApiResponses Um wrapper para permitir uma lista de vários objetos ApiResponse.
@Authorization Declara um esquema de autorização a ser usado em um recurso ou uma operação.
@AuthorizationScope Descreve um escopo de autorização do OAuth2.

Anotando em nossos controllers para documentação

Acrescente a anotação @api para definir a classe para o swagger

@RestController
@Api(value = “Question”)
public class QuestionController {

Agora para cada endpoint, vamos anotar com o @ApiOperation para descrever o nosso endpoint.

@ApiOperation(value = “Mostra lista de questões”)
@GetMapping(“/questions”)
public List < Question > getAllQuestions() {
return questionRepository.findAll();
}

Agora quando executar o seu projeto spring você poderá acessar a página do swagger para interagir com sua api http://localhost:8080/swagger-ui.html

Você verá uma tela parecida com essa

Em poucos minutos o swagger está configurado em seu projeto e você terá maior facilidade de interagir e documentar seu projeto de apis. Isso é tudo por enquanto, fique à vontade para deixar seu comentário.

--

--