2014-05-20 8 views
6

zu bekommen Ich folge dem Artikel unter http://raibledesigns.com/rd/entry/documenting_your_spring_api_with.Nicht in der Lage, Swagger UI mit Spring-Boot

Alles funktioniert gut, aber nicht in der Lage Swagger UI zu integrieren.

http://localhost:8080/docs/index.html 

Ergebnisse in/Fehlerumleitung.

+0

Haben Sie diese Arbeit bekommen? Ich folge diesem Blogpost nicht, da sich die Dinge sehr verändert haben, aber ich bekomme auch keine Arbeit. Siehe https://github.com/martypitt/swagger-springmvc für aktualisierte Anweisungen –

+0

Ich habe alles richtig mit SpringBoot funktioniert (obwohl es ziemlich lange gedauert hat!) Wo bist du auf und ich werde versuchen und helfen –

+0

Ich habe es funktioniert aber erinnere dich nicht an die Ursache –

Antwort

2

Ich weiß, das ist eine alte Frage, aber vielleicht wird dies jemandem mit dem ähnlichen Problem in der Zukunft helfen.

Ich folgte ähnliche Tutorial zu dem Sie erwähnt, und ich machte es ohne Probleme. Ich habe mein eigenes Dokument geschrieben, wie man einen Swagger mit UI in einem Spring-Boot-Projekt vor ein paar Wochen einrichten kann. Vielleicht wird es Ihnen helfen, da es kürzer und aktueller ist.

hinzufügen Maven Abhängigkeiten

Haften Sie diese in Ihrem pom.xml:

<dependency> 
<groupId>com.mangofactory</groupId> 
<artifactId>swagger-springmvc</artifactId> 
<version>1.0.2</version> 
<type>jar</type> 
</dependency> 

hinzufügen Swagger UI

die Swagger UI von Github zum Download. Kopieren Sie den Ordner dist in Ihr Verzeichnis webapp und benennen Sie dist in swagger um (oder einen beliebigen anderen Namen).

öffnen index.html-Datei im Verzeichnis kopiert und die URL in der ersten JavaScript-Funktion ändern, so verweist er auf die /api-docs endpoint:

var url = window.location.search.match(/url=([^&]+)/); 
    if (url && url.length > 1) { 
    url = decodeURIComponent(url[1]); 
    } else { 
    url = "/project-name/api-docs"; 
} 

konfigurieren Swagger

erstellen SwaggerConfig.java Klasse und Konfiguration swagger dort:

@Configuration 
@EnableSwagger 
@EnableAutoConfiguration 
public class SwaggerConfig { 
    private SpringSwaggerConfig springSwaggerConfig; 
    @Autowired 
    public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig) { 
    this.springSwaggerConfig = springSwaggerConfig; 
    } 
    @Bean 
    public SwaggerSpringMvcPlugin customImplementation() { 
    return new SwaggerSpringMvcPlugin(this.springSwaggerConfig) 
    // Root level documentation 
    .apiInfo(new ApiInfo("Swagger-demo JSON API", "This service provides a JSON representation the service API", null, null, null, null)) 
    .useDefaultResponseMessages(false) 
    // Map the specific URL patterns into Swagger 
    .includePatterns("/greeting.*"); 
    } 
} 

Ihr Swagger sollte jetzt laufen und laufen. Versuchen Sie, auf /project-name/swagger/index.html zuzugreifen.

1

Ich antworte dies mit Swagger2-Konfiguration in einem Groß-basierten Spring-Boot-Anwendung. Im Folgenden sind die für Swagger2 erforderlichen Konfigurationen aufgeführt.

hinzufügen Gradle Configuartion

hinzufügen Gradle Abhängigkeiten innerhalb build.gradle Datei

dependencies { 
    compile("io.springfox:springfox-swagger2:2.0.2") 
    compile("io.springfox:springfox-swagger-ui:2.0.2") 
    } 

Swagger2 Confugration Klasse

@Configuration 
@EnableSwagger2 
public class SwaggerConfig { 
    @Bean 
    public Docket userApi() { 
    return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any()) 
     .paths(PathSelectors.any()).build().pathMapping("/") 
     .directModelSubstitute(LocalDate.class, String.class) 
     .genericModelSubstitutes(ResponseEntity.class) 
     .alternateTypeRules(newRule(
      typeResolver.resolve(DeferredResult.class, 
       typeResolver.resolve(ResponseEntity.class, WildcardType.class)), 
      typeResolver.resolve(WildcardType.class))) 
     .useDefaultResponseMessages(false) 
     .globalResponseMessage(RequestMethod.GET, 
      newArrayList(new ResponseMessageBuilder().code(500).message("500 message") 
       .responseModel(new ModelRef("Error")).build())) 
     .securitySchemes(newArrayList(apiKey())).securityContexts(newArrayList(securityContext())) 
     .apiInfo(apiInfo()); 
    } 

    @Autowired 
    private TypeResolver typeResolver; 

    private ApiKey apiKey() { 
    return new ApiKey("mykey", "api_key", "header"); 
    } 

    private SecurityContext securityContext() { 
    return SecurityContext.builder().securityReferences(defaultAuth()) 
     .forPaths(PathSelectors.regex("/anyPath.*")).build(); 
    } 

    List<SecurityReference> defaultAuth() { 
    AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); 
    AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; 
    authorizationScopes[0] = authorizationScope; 
    return newArrayList(new SecurityReference("mykey", authorizationScopes)); 
    } 

    @Bean 
    SecurityConfiguration security() { 
    return new SecurityConfiguration("123456", "test-app-realm", "clientapp", "apiKey"); 
    } 

    @Bean 
    UiConfiguration uiConfig() { 
    return new UiConfiguration("validatorUrl"); 
    } 

    private ApiInfo apiInfo() { 
    ApiInfo apiInfo = new ApiInfo("DSM API", "API for DSM", "1.0.0", "termsOfServiceUrl", 
     "[email protected]", null, null); 
    return apiInfo; 
    } 

} 

hinzufügen Swagger UI

Laden Sie die Swagger UI von Github.Kopieren Sie den dist-Ordner in Ihrem src/main/resources/static und benennen dist stolzieren

HomeController.class

@Api(basePath = "/", value = "/", description = "Home Controller") 
@Controller 
public class HomeController { 

    @RequestMapping("/") 
    public String home() { 
    return "redirect:swagger-ui.html"; 
    } 

} 

MyApplication.class

@SpringBootApplication 
@ComponentScan(basePackageClasses = SwaggerConfig.class) 
public class MyApplication { 

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


} 

Konfigurieren Sie Ihre Spring-Boot-Anwendung mit Abhängigkeiten und starten Sie t er API.

die URL wird http://localhost:8080/v2/swagger-ui.html Sie können auch dies wie oben beantworten anpassen.

0

Ich habe auch das gleiche Problem. Ich war in der Lage, JSON zu sehen, aber nicht swagger ui nach dem Hinzufügen von DEST-Ordner aslo. In initialize Klasse, die SpringBootServletInitializer I unten Methode erweitert hinzugefügt dann wurde es perfekt funktioniert

@Override 
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
    return application.sources(SampleWebStaticApplication.class); 
} 

finden Sie link

Verwandte Themen