No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso de Java Spring

Curso de Java Spring

Alejandro Ram铆rez

Alejandro Ram铆rez

Documentar nuestra API con Swagger

31/35
Recursos

Aportes 61

Preguntas 10

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Si est谩n utilizando la versi贸n 3.0.0 de swagger, se debe tener en cuenta lo siguiente:

  • En el archivo bundle.gradle se debe a帽adir las siguientes l铆neas
    implementation "io.springfox:springfox-boot-starter:3.0.0"
    compile 鈥渋o.springfox:springfox-swagger-ui:3.0.0鈥

  • En la clase SwaggerConfig ya no hace falta a帽adir la anotaci贸n @EnableSwagger2

  • La url de acceso a la documentaci贸n es: {host}:{puerto} / {contexto} /swagger-ui/index.html

para los que les sale el error de NullPointerException lo unico que deben hacer es ir al application.properties y agregar esta linea spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER

Hola, si llegan a tener un error de NullPointerException sin raz贸n alguna, s贸lo deben bajar la version de SpringBoot de 2.6.1 a 2.5.5 (estuve rato lidiando con ese error)

Me hubiera gustado que se toque un tema importante en la capa de servicios como lo son las transacciones. Espero que salga el curso avanzado de spring.

Una forma para ponerle un poco mas de detalle a nuestras APIS.


Para el 2023 ya existe una dependencia llamada Spring doc OpenApi, que te permite implementar Swagger sin la necesidad de crear beans.

implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0'

Y en tu application.properties colocar la url de swagger

springdoc.swagger-ui.path=/swagger-ui.html

Y listo, ya tienen el swagger funcionando con pocos pasos

Si usan la versi贸n 3.0.0 de swagger y les aparece un null o
este error :
->Failed to start bean 鈥榙ocumentationPluginsBootstrapper鈥; nested exception is java.lang.NullPointerException

pueden solucionarlo agregando:
-> spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER en el application.properties

en el build.gradle:
-> implementation 鈥渋o.springfox:springfox-boot-starter:3.0.0鈥

Nota: En mi caso elimine del archivo SwaggerConfig la anotaci贸n @EnableSwagger2 .
-> estoy usando la versi贸n 2.6.4 de Spring.

Para el a帽o en que escribo este comentario ya se encuentra la versi贸n 3 de Spring boot, pero la 煤ltima versi贸n de Swagger, no es compatible con esta, por lo que incorpora Jakarta en vez de Javax, por tal motivo es necesario bajar la versi贸n de Spring boot, ademas hay configuraciones que el maestro hace las cuales ya no son necesarias:

  • En caso que tengas una version 3, te recomiendo bajarla a la 2.7.6.
  • Cambia todas las importaciones que tengas en Jakarta a Javax
  • No es necesario hacer las dos importaciones de swagger y swagger ui, mas ni te funcionar谩
    unicamente debes agregar esta importaci贸n
implementation "io.springfox:springfox-boot-starter:3.0.0"

Esta unica importaci贸n ya engloba las dos anterios por que lo necesitas volver a agregarlas

Nota: Recuerda que el puerto debes agregar el que est茅s usando

La forma en la que el profesor implementa Swagger ya no funciona hoy en d铆a, le dejo el link de maven repository para que solo copien y agreguen el archivo build.gradle

// https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-ui
implementation group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.5.12'

lo pueden ver en la documentaci贸n: https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-ui/1.5.12

Recuerden ya no va ser necesario crear en archivo SwaggerConfig que crea el profesor.

para acceder a la documentacion:

http://localhost:8090/api/swagger-ui.html

Espero les sirva !!

Genial, esto era lo que le faltaba que alguien ense帽ara
Este curso mil veces mejor de lo que esperaba

Excelente swagger2 y muy practico, seria bueno un curso para ver mas detalles

Para los que est谩n usando Spring Boot v3, no tienen que usar las librer铆as mencionadas en el video, solo tienen que usar Spring doc, para eso agreguen en el build.grade la siguiente linea:

implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' 

Solo con eso ya van a poder acceder a Swagger a trav茅s de la siguiente URL:

http://localhost:8080/platzi-market/api/swagger-ui/index.html

Y para finalizar les dejo la equivalencia de los annotations de Swagger UI en Spring doc que deben usar en el ProductController:

Si quieren m谩s informaci贸n la pueden encontrar en esta p谩gina:

https://springdoc.org/v2/index.html#migrating-from-springfox 

Este v铆deo se me hace que qued贸 corto. Me parece genial el v铆deo pero quiz谩 un par de v铆deos extras agregando el uso de examples y tags en los endpoints, as铆 como su uso en conjunto con bean validation hubiese sido de mayor provecho.

Quiero compartir con ustedes el proyecto que he estado usando con el fin de aprender Spring boot y que pueden encontrar en GitLab ac谩.

Puntos a tener en cuenta:

  1. Estoy usando Maven en lugar de Gradle
  2. Hasta este momento, no pienso usar Spring security
  3. Eleg铆 una jerarqu铆a de paquetes mucho m谩s plana que el usado en este curso
  4. Todo el desarrollo est谩 en ingl茅s
  5. Uso una nomenclatura ligeramente distinta (DAO en lugar de Repository, por ejemplo)
  6. Considero que empleo mejores pr谩cticas que las mostradas en este curso en ciertas partes del proyecto
  7. Si bien tengo a帽os en la industria, particularmente con Java, soy automatizador de pruebas y Spring no ha sido una herramienta con la que tenga experiencia. Por lo tanto, a煤n me queda mucho por aprender y mejorar.

Para poder utilizar Swagger 3.0.0 con la versi贸n de Spring 2.7.7 es necesario agregar en el build.gradle:

implementation 'io.springfox:springfox-swagger2:3.0.0'
implementation "io.springfox:springfox-boot-starter:3.0.0"
implementation 'io.springfox:springfox-swagger-ui:3.0.0'
compileOnly "io.springfox:springfox-swagger-ui:3.0.0"

Y en el file de config:

@Configuration
@EnableWebMvc

Me pas茅 medio hora solucionando un error en el que swagger no indicaba la documentaci贸n con el mensaje 鈥淣o operations defined in spec!鈥.

Resulta que hab铆a puesto la direcci贸n del paquete con ; jajaj excelente curso, espero con ansias el curso avanzado de spring !

Documentar nuestra API con Swagger

驴Por qu茅 documentar nuestra API?

  • Le agregamos una capa de entendimiento
  • Es m谩s f谩cil de usar
  • Es m谩s profesional
  • Quien consuma tendr谩 informaci贸n oficial y de primera mano

Usos

  • Incluir las dependencias en el archivo build.gradle

    • Buscar en MvnRepository Springfox Swagger y Springfox Swagger UI (este 煤ltimo es para el cliente web para visualizar la documentaci贸n generada)

      implementation "io.springfox:springfox-boot-starter:3.0.0"
      compile 鈥渋o.springfox:springfox-swagger-ui:3.0.0
  • Crear dentro del paquete web, uno que se llame config

    • Crear una clase llamada SwaggerConfig
  • Anotar la clase con @Configuration y EnableSwagger2(para esta 煤ltima, en Swagger 3 no es necesario incluirla)

  • Escribir el siguiente m茅todo:

    • Esto es lo m铆nimo para crear la documentaci贸n

      @Bean
      public Docket api() {
      	return new Docket(DocumentationType.SWAGGER_2)
      		.select()
      		.apis(RequestHandlerSelectors.basePackage(
      						"com.platzi.market.web.controller")) // Paquete de las clases que queremos exponer
      		.build(); // Construir la respuesta
      
      			// a partir y despu茅s del select -> lo que queremos que exponga en la documentaci贸n
      }
      
  • La url de acceso a la documentaci贸n en Swagger 3 es: {host}:{puerto} / {contexto} /swagger-ui/index.html

    • En Swagger 2 es {host}:{puerto} / {contexto} /swagger-ui.html
  • Podemos modificar c贸mo se ve desde Swagger cada controlador

    • En la clase del controlador, en uno de los m茅todos, se a帽ade @ApiOperation("Descripci贸n") para describir un m茅todo HTTP

    • @ApiResponse(code = 200, message = "OK") para especificar el c贸digo HTTP que devuelve ese m茅todo

      • Especificar diferentes respuestas de c贸digos HTTP

        @ApiResponses({
        	@ApiResponse(code = 200, message = "OK"),
        	@ApiResponse(code = 404, message = "Product not found")
        })
        
    • Describir un par谩metro de un m茅todo

      public ResponseEntity<Product> getProduct(@ApiParam(value = "The id of the product", required = true, example = "7")
                                                        @PathVariable("id") int productId) {
      //
      } 
      

Saludos es genial esta clase y poder Documentar nuestra API con Swagger aunque personalmente he tenido problemas con las versiones que se proponen en esta clase. Tal como se plantea a mi me aparec铆a el siguiente error justo despu茅s de levantar el servicio:

java.lang.NullPointerException: null.

y despue茅 me lo paraba.

Entonces googleando y despu茅s de varios d铆as y de ayuda de los comentarios que Swagger est谩 incluida en springdoc-openapi-ui y que no es necesario configurarlo con la clase Swagger config, basta con a帽adir la de pendencia en gradle:

implementation 'org.springdoc:springdoc-openapi-ui:1.6.6'

borrar las otras i listo,documentaci贸n en el context path.

Referencias.
https://springdoc.org/#migrating-from-springfox
https://www.baeldung.com/spring-rest-openapi-documentation

Desde la versi贸n 3 de spring la librer铆a de swagger fue modificada, y ahora usada springdoc.
Instalaci贸n:
En el build.gredel

implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0'

en el application.properties hacemos la siguiente modificacion:

springdoc.swagger-ui.path=/swagger-ui.html

No es necesario crear el archivo Swagger.config
Con esto ya tendremos la aplicacion deaplegada con la siguiemte url : localhost:{puerto}/{context-path}/swagger-ui/index.html

Para los que recien estan viendo el curso, recomiendo otra forma de documentar que es agregando esta dependencia en build.gradle

implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0'

luego agregamos esta linea en application-dev.properties

springdoc.swagger-ui.enabled=true

tambien se puede customizar algunas propiedades, para eso les dejo la documentacion de donde saque la informacion
https://springdoc.org/#getting-started
con esos simples pasos ya no necesitarias crear una configuracion, solo agregando la dependencia y habilitando la propiedad se puede acceder a la documentacion de la api a traves del link por defecto: https://server:port/context-path/swagger-ui.html

Usando swagger 3.0.0 con spring boot 3.0.6

Retirar annotation de la clase SwaggerConfig

@EnableSwagger

Agregar dependencias

implementation 'io.springfox:springfox-swagger2:3.0.0'
implementation 'io.springfox:springfox-swagger-ui:3.0.0'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.4'

Las importaciones en el controller se hacen desde

io.swagger.v3.oas.annotations

Para cambiar la descripci贸n que en clase se hace con (@ApiOperation)

@Operation(summary = "Get all supermarket products")  // Otra propiedad adem谩s de summary puede ser description 

La estructura para @ApiResponse

@ApiResponse(responseCode = "200", description = "Ok")

La estructura para @Parameter en lugar de @ApiParam para el id

@Parameter(description = "The id of the product",  required = true, schema = @Schema(implementation = Integer.class)) // Se cambia la implementaci贸n seg煤n el par谩metro

Ojal谩 pueda ser de utilidad. 隆Saludos!

Wilmar De MelquisedecLisbet

Si llegan a tener problemas de nullPointerException pueden agregar los sigte a application.properties:

spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER

Hola compa帽eros. Me parece excelente esta clase y que se a帽ada Swagger para documentar nuestra API, creo que es muy importante hacer esto y sobretodo cuando queremos mostrarla a otros developers que no han estado durante la etapa de dise帽o.

Adem谩s les quiero compartir que Swagger no es la 煤nica manera de hacer esto, hay otra alternativa llamada RAML que esta bastante interesante y que us茅 para un proyecto con Node.js hace un tiempo. Les dejo el link:
https://raml.org/

Tengo este error al realizar los cambios en SwaggerConfig, estoy usando springboot 2.6.2. (Hasta abajo la solucion)

Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.toString()" because the return value of "springfox.documentation.spi.service.contexts.Orderings.patternsCondition(springfox.documentation.RequestHandler)" is null

Por lo cual mejor uso springdoc para swagger documentation. Vean mi respuesta en https://stackoverflow.com/questions/70036953/springboot-2-6-0-spring-fox-3-failed-to-start-bean-documentationpluginsboot

Para los que esten en la version 2.9.2 de swagger solo necesitan la anotacion @EnableSwagger2, no es necesario la de @Configuration ( da error )

Yo estoy trabajando con maven y la version de spring es 3.0.3, agregu茅 esta dependencia que proporcionaron otros compa帽eros en los comentarios, pero no me funciono. Y revisando esta documentaci贸n, encontre que la correcta es la siguiente:

<dependency>
      <groupId>org.springdoc</groupId>
      <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
      <version>2.0.2</version>
   </dependency>

Pero me marco el siguiente error:

Error calling `jakarta.validation.Validation#buildDefaultValidatorFactory`

jakarta.validation.NoProviderFoundException: Unable to create a Configuration, because no Jakarta Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.

Este error indica que no se ha encontrado un proveedor de validaci贸n de Jakarta Bean Validation en su classpath. Para solucionar este problema, tuve que agregar una implementaci贸n de Bean Validation a su proyecto, como Hibernate Validator:

<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>8.0.0.Final</version>
</dependency>

Otra manera de hacerlo, es utilizando SpringDoc OpenApi. Para esto simplemente debemos buscar la depencia en Maven Reposiotry e integrarla a nuesto build.gradel, ya que SpringDoc OpenApi hace uso de Swagger.

Implementaci贸n

implementation 'org.springdoc:springdoc-openapi-ui:1.6.11' 

Una vez integrada la dependencia, podemos consultar nuestra documentacion en : localhost:8080/platzi-market/api/swagger-ui.html

Para mayor informaci贸n, consultar:

https://www.baeldung.com/spring-rest-openapi-documentation

Para usar la versi贸n 2.9.2 de Swagger con la version de SpringBoot 2.6+, se debe colocar esta propiedad en application.properties

spring.mvc.pathmatch.matching-strategy=ant-path-matcher

Existe un spring boot starter para swagger que incluye las dos dependencias mostradas ac谩:

    // Maven
    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-boot-starter</artifactId>
      <version>${swagger2.version}</version>
    </dependency>
// Gradle
implementation 'io.springfox:springfox-boot-starter:3.0.0'

Hola, gracias por el curso 馃榾

Si estan utilizando spring 3.X, y quieren utilizar swagger 3, yo no pude implementar las librer铆as del curso, pero pueden implementar la siguiente librer铆a

org.springdoc:springdoc-openapi-starter-webmvc-ui

y la clase SwaggerConfig quedar铆a de la siguiente manera:

package com.sample.springapi.web.config;

import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;

public class SwaggerConfig {
    
    @Bean
    public GroupedOpenApi publicApi() {
        return GroupedOpenApi.builder()
                .group("spring-api")
                .pathsToMatch("/public/**")
                .build();
    }
}

Hola! A quienes est茅n usando la versi贸n 3.0.0 de Swagger, les comento que es lo que funcion贸 en mi caso:

En el build.gradle

dependencies {
	...
	implementation 'io.springfox:springfox-boot-starter:3.0.0'
	implementation 'io.springfox:springfox-swagger-ui:3.0.0'
}

En el archivo SwaggerConfig.java

@Configuration
public class SwaggerConfig {
    private String controllersBasePackage = "com.jessat18.market.web.controller";

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage(controllersBasePackage))
                .build();
    }
}

Y en PlatziMarketApplication.java

@EnableWebMvc
@SpringBootApplication
public class PlatziMarketApplication {

	public static void main(String[] args) {
		SpringApplication.run(PlatziMarketApplication.class, args);
	}

Para ingresar en esta nueva versi贸n, deben ingresar a帽adiendo /swagger-ui/index.html, quedando:

{puerto}/{contexto}/swagger-ui/index.html

Espero que se realice un curso profundizando un poco m谩s swagger !

A m铆 lo que me funcion贸 fue implementar la siguiente en el archivo build.gradle dependencia de a cuerdo a lo le铆 en: https://stackoverflow.com/questions/74701738/spring-boot-3-springdoc-openapi-ui-doesnt-work
La clase SwaggerConfig.java ya no es necesaria.

implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'

Y en la clase ProductController.java las anotaciones fueron las siguientes:

 @GetMapping("/all")
    @Operation(summary = "Get all supermarket products")
    @ApiResponse(responseCode = "200", description = "OK")
    public ResponseEntity<List<Product>> getAll() {
        return new ResponseEntity<>(productService.getAll(), HttpStatus.OK);
    }

@GetMapping("/{productId}")
    @Operation(summary = "Search a product with an ID")
    @ApiResponses({
            @ApiResponse(responseCode = "200", description = "OK"),
            @ApiResponse(responseCode = "404", description = "Product not found")
    })
    public ResponseEntity<Product> getProduct(@Parameter(description = "Product ID", required = true, example = "1") @PathVariable("productId") int productId) {
        return productService.getProduct(productId)
                .map(product -> new ResponseEntity<>(product, HttpStatus.OK))
                .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
    }

Posteriormente a mi comentario anterior sobre sustituir las dos dependencias que mencion贸 el Profesor por solo una, las anotaciones (como @ApiOperation o @ApiParam) en la clase SwaggerConfig tambi茅n cambiar谩n, por lo que los m茅todos getAll y getProduct fueron modificados de esta manera:

@GetMapping("/all")
    @Operation(summary = "Get all supermarket products")
    @ApiResponse(responseCode = "200", description = "OK")
    public ResponseEntity<List<Product>> getAll() {
        return new ResponseEntity<>(productService.getAll(), HttpStatus.OK);
    }
@GetMapping("/{id}")
    @Operation(summary = "Search a product with an ID")
    @ApiResponses({
            @ApiResponse(responseCode = "200", description = "OK"),
            @ApiResponse(responseCode = "404", description = "Product not found")
    })
    public ResponseEntity<Product> getProduct(@Parameter(description = "The ID of the product", required = true, example = "7")
                                                  @PathVariable("id") int productId) {
        return productService.getProduct(productId)
                .map(product -> new ResponseEntity<>(product, HttpStatus.OK))
                .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
    }

Espero les sirva.
Saludos !!

Si tambi茅n tienen el mismo problema del error fantasma 鈥淣ullPointerException鈥 pues encontr茅 una soluci贸n, agregando la siguiente linea en el archivo de 鈥渁pplication.properties鈥:

spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER

Alejandro buenas tardes, ser铆a bastante interesante complementar el curso con el Update, el cual es parte del CRUD.
Saludos y agradezco se remita alguna documentaci贸n al respecto, para complementar el ejercicio.

Cu谩l es la funci贸n de spring-fox? Dar un interf谩z grafica.

Los endpoint me funcionan bien, pero no me genera la documentacion, alguien sabe porque ??

Excelente forma de documentar la Apis, he utilizado esta forma y es muy interesante, aprendiendo cada dia mucho mas.

Para los de Springboot 3 con Maven, deben incluir esta dos dependencias en su POM.xml:

<!-- Agregar Swagger -->
<dependency>
	<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
	<version>2.2.0</version>
</dependency>
<!-- Controlar el error del Bean de Jakarta -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-validation</artifactId>
	<version>3.1.2</version>
</dependency>

Les dejo mi ajuste en el 2023 para que funcione swagger-ui:

Colocar en las propiedades de la aplicaci贸n (application.properties):

springdoc.api-docs.enabled=true
springdoc.swagger-ui.enabled=true
springdoc.swagger-ui.path=/swagger-ui.html
springdoc.packages-to-scan={CAMBIAR_POR_SU_RUTA_PAQUETE_CONTROLADORES}

Y en el (pom.xml) si trabajaron con maven como administrador de dependencias:

<dependency>
	<groupId>org.springdoc</groupId>
	<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
	<version>2.0.2</version>
</dependency>

y para poder ver la documentaci贸n utilizar la url: {host}:{puerto}/{contexto}/swagger-ui.html

Para los que usen Maven en este proyecto (como yo jeje) deben incluir las siguientes dependencias a su pom.xml

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>3.0.0</version>
		</dependency>

		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-boot-starter</artifactId>
			<version>3.0.0</version>
		</dependency>

		<!--
		https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>3.0.0</version>
		</dependency>

Una vez descargadas las dependencias pueden lanzar la aplicaci贸n.

Hay que entender.

si alguien quiere usar swagger 3.0 aca estan las dependencias.

//	swagger ui 3
	implementation "io.springfox:springfox-boot-starter:3.0.0"
	implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '3.0.0'

en la clase SwaggerConfig ya no necesitan la etiqueta @EnableSwagger2

Muy desactualizado todo鈥 luego buscar茅 est谩 parte en otro.
Ser铆a bueno que actualicen el curso. al menos con comentarios en RECURSOS

Las implementaciones correctas son ``` implementation 'io.springfox:springfox-swagger2:3.0.0' implementation 'io.springfox:springfox-swagger-ui:3.0.0' implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.4' ``` Creditos a ``` Wilmar De MelquisedecLisbet ``` Si quieren mas detalles busquenlo en los aportes con ctr + f

Para que me funcionara Swagger2, tuve que remover la anotaci贸n @Configuration, y solo dejar @Swagger2

Video para generaci贸n de documentaci贸n swagger en java

para los que tengan el problema del NullPointerException, les dejo este enlace: https://stackoverflow.com/questions/40241843/failed-to-start-bean-documentationpluginsbootstrapper-in-spring-data-rest

ya otros compa帽eros indican que hacer para solucionarlo, solo me dio curiosidad entender que habia detras del problema 馃惐鈥嶐煆

Si usan spring-boot-starter-actuator no les va a funcionar la dependencia Swagger, con la version mas reciente.

Consideren Cambiarse a SpringDoc tal y como se dice en esta respuesta de StackOverflow

Solo es a帽adir la dependencia de
SpingDoc
y listo, lo tendr谩n funcionando en

http://{server}:{port}/{context-path}/swagger-ui/index.html
```.

Al que le aparece este error:
Caused by: java.lang.NullPointerException: Cannot invoke 鈥渙rg.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()鈥

En la version 3.0.0 (No se si entra version funcione) hay que poner en propiertes:
spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER

La forma de ingresar al swagger es con: swagger-ui/index.html.

Ejp:
{host}:{puerto} / {contexto} /swagger-ui/index.htm

Documentaci贸n del Controller hacia Swagger

Que gran forma de documentar las apis. Genial!

<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>
        </dependency>

No me quedo muy claro el uso de la notacion
@Bean y @Configuration
Para que son y que m谩s se puede implementar con ellas?
Gracias

Swagger se debe utilizar en produccion? si es asi es posible desactivar que se envien los metodos post, put y delete?

Dependencias:

implementation 'io.springfox:springfox-swagger2:2.9.2'
implementation 'io.springfox:springfox-swagger-ui:2.9.2'

Si teiene el error de
Failed to start bean 鈥榙ocumentationPluginsBootstrapper鈥; nested exception is java.lang.NullPointerException:

yo solucione usando la verion de 3.0.0 en
springfox-swagger2 y springfox-swagger-ui
elimine en la linea de @EnableSwagger2
y agrege esta dependencia

<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>

y agrege esta linea en
@EnableWebMvc
en el archivo princepal en mi caso
MarketApplication.java

clase super util, gracias profe

jajaja no estoy acostumbrado a ver documentaci贸n

Excelente!!