Odpowiadam na to z konfiguracją swagger2 wewnątrz aplikacji wiosennej opartej na gradle. Poniżej przedstawiono konfigurację wymaganą dla Swagger2.
Dodaj Gradle Configuartion
Dodaj Gradle Zależności wewnątrz pliku build.gradle
dependencies {
compile("io.springfox:springfox-swagger2:2.0.2")
compile("io.springfox:springfox-swagger-ui:2.0.2")
}
Swagger2 Confugration Class
@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;
}
}
Dodaj Swagger UI
Pobierz Swagger UI z github.Skopiuj folder dist do swoich src/main/resources/static katalogu i zmień dist do Swagger
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);
}
}
Skonfiguruj aplikację rozruchu wiosennego za pomocą zależności i uruchom, aby zobaczyć t on API.
Url będzie http://localhost:8080/v2/swagger-ui.html możesz również dostosować to jak wyżej.
Dostałeś tę pracę? Nie śledzę tego posta na blogu, ponieważ wiele się zmieniło, ale nie działam też. Zobacz https://github.com/martypitt/swagger-springmvc, aby uzyskać zaktualizowane instrukcje. –
Mam wszystko, co działa poprawnie z SpringBoot (choć zajęło to sporo czasu!) Gdzie jesteś, a ja postaram się pomóc –
Mam to działa ale nie pamiętam głównej przyczyny. –