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 Réponses :
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(); } }
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.
XXX
pom.xml Si vous utilisez Spring Security, vous devez ajouter les configurations ci-dessous @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();
}
<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>
@EnableSwagger2
@SpringBootApplication
public class SwaggerDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SwaggerDemoApplication.class, args);
}
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
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 #
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 SwaggerConfigAvez-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