1
votes

Impossible d'obtenir ma liste de points de terminaison du contrôleur dans l'interface utilisateur swagger

Je suis nouveau dans Spring Boot avec Swagger UI. J'essaie juste de configurer mes points de terminaison de contrôleur de repos pour qu'ils s'affichent sur l'écran de l'interface utilisateur swagger, mais il affiche Aucune opération pour les spécifications définies. Bien sûr, c'est un problème de configuration.

J'ai essayé @EnableAutoConfiguration, mais il ne trouve toujours pas le contrôleur

SwaggerConfig.java

package com.example.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import static springfox.documentation.builders.PathSelectors.regex;

@EnableSwagger2
@Configuration

public class SwaggerConfig {

 @Bean
 public Docket productApi() {
     return new Docket(DocumentationType.SWAGGER_2)  
              .select()                                  
              .apis(RequestHandlerSelectors.basePackage("com.example.controller"))              
              .paths(regex("/test.*"))                       
              .build();                                           

 } 
}



TestController.java

package com.example.controller;


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import io.swagger.annotations.Api;

@RestController
@RequestMapping(value = "/test")
@Api(value="onlinestore", description="Operations pertaining to products in Online Store")
public class TestController {

    @RequestMapping(value = "/test-swagger", method= RequestMethod.GET)
    public String home() {
        return "Spring is here!";
    }

}

}

SwaggerDemoApplication.java

package com.example.config;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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


3 commentaires

Pouvez-vous changer à des fins de test Docket bean pour avoir cette configuration: .apis (RequestHandlerSelectors.any ()). Path (PathSelectors.any‌ ()) .


essayez de supprimer .paths (regex ("/ test. *")) de SwaggerConfig


Avez-vous l'annotation @EnableGlobalMethodSecurity (..) dans votre code pour activer Spring Rest Security? Si oui, votre problème peut être lié à un bogue dans Swagger: github.com/springfox/springfox / issues / 2531


3 Réponses :


0
votes

Vous pouvez l'essayer de cette manière.
Le chemin que vous avez spécifié peut poser problème.

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("<your-package>"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("API Documentation")
                .description("This API documentation is related <something>")
                .version("1.0.0")
                .build();
    }
}


3 commentaires

J'ai essayé de configurer le chemin de différentes manières. Les points de terminaison ne s'affichent toujours pas. Je peux vous ajouter à mon dépôt gitlab privé si vous avez un compte. Merci pour votre réponse.


@AnirbanDutta mon compte git est déjà lié à mon profil afin que vous puissiez m'ajouter dans votre projet.


J'ai trouvé le problème et publié la solution dans une autre réponse.



0
votes

XXX

 @Override
    public void configure(WebSecurity web) throws Exception {
        web
          .ignoring()  
            .antMatchers("/v2/api-docs", "/configuration/**", "/swagger*/**", "/webjars/**");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception{

         http
         .csrf().disable()
         .authorizeRequests()
         .antMatchers("/v2/api-docs", "/configuration/**", "/swagger*/**", "/webjars/**")
         .permitAll()
         .anyRequest().authenticated();
    }

pom.xml

<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-core</artifactId>
            <version>2.9.2</version>
        </dependency>

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

Si vous utilisez Spring Security, vous devez ajouter les configurations ci-dessous

@EnableSwagger2
@SpringBootApplication
public class SwaggerDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SwaggerDemoApplication.class, args);
 }


3 commentaires

Puis-je partager mon dépôt privé sur gitlab? Si oui, veuillez me fournir votre nom d'utilisateur. Désolé, je suis toujours un noob, je n'ai pas pu le faire fonctionner même après toutes les modifications suggérées


@AnirbanDutta quel problème vous rencontrez après la mise en œuvre ci-dessus, vous pouvez partager votre projet en tant que dépôt public et partager le lien


gitlab.com/anirban-dutta/my-rough-work me le faire savoir si cela fonctionne



1
votes

J'ai vérifié votre projet et trouvé le problème.

Et le problème n'est pas votre configuration Swagger mais votre contrôleur n'est pas analysé en tant que classe de ressources Spring.

Parce que la classe de démarrage de votre application (classe Main) n'a pas d'annotation d'analyse de composant.
Donc, votre classe devrait être comme ceci:

@EnableSwagger2
@SpringBootApplication
@ComponentScan("com.example")
public class SwaggerDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SwaggerDemoApplication.class, args);
    }
}

Vous pouvez maintenant accéder à votre documentation API à partir d'ici http: // localhost: 8098 / swagger-ui.html #


0 commentaires