我有一个带有 jersey 和 gradle 的 spring boot 应用程序,我正在尝试使用 springfox 自动生成 API 文档。
我已按照此处的步骤操作:http: //springfox.github.io/springfox/docs/current/
这是我所做的:
构建.gradle:
dependencies { ......... //Swagger compile "io.springfox:springfox-swagger2:2.4.0" compile "io.springfox:springfox-bean-validators:2.4.0" compile 'io.springfox:springfox-swagger-ui:2.4.0' }
春季启动应用程序:
@SpringBootApplication @EnableSwagger2 public class AnalyzerServiceApplication{ public static void main(String[] args) { SpringApplication.run(AnalyzerServiceApplication.class, args); } @Bean public Docket analyzerApi() { 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())) .enableUrlTemplating(true) .globalOperationParameters( newArrayList(new ParameterBuilder() .name("someGlobalParameter") .description("Description of someGlobalParameter") .modelRef(new ModelRef("string")) .parameterType("query") .required(true) .build())) .tags(new Tag("Pet Service", "All apis relating to pets")) ; } @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( "test-app-client-id", "test-app-client-secret", "test-app-realm", "test-app", "apiKey", ApiKeyVehicle.HEADER, "api_key", "," /*scope separator*/); } @Bean UiConfiguration uiConfig() { return new UiConfiguration("validatorUrl"); }
现在的控制器(泽西)
@Api(value = "/widget") @Path("/widget") @Component public class WidgetController extends BaseController { @Autowired private WidgetService widgetService; @GET @Path("/secHealth") @ApiOperation(value = "Find pet by ID", notes = "Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions", response = Pet.class) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid ID supplied"), @ApiResponse(code = 404, message = "Pet not found") }) public Response getPet() { //Do something }
当我启动服务器并导航到http://localhost:8080/swagger-ui.html时,我可以看到“绿色”UI 屏幕,其中仅列出了基本错误控制器。我自己的控制器不在那里。
我做错了什么?谢了,兄弟们