ui使用的是swagger-bootstrap-ui
-
引入依赖
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>1.9.4</version> </dependency>
-
添加配置类
import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI; import com.google.common.collect.Lists; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.schema.ModelRef; import springfox.documentation.service.*; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.service.contexts.SecurityContext; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger.web.UiConfiguration; import springfox.documentation.swagger.web.UiConfigurationBuilder; import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.util.List; @Configuration @EnableSwagger2 @EnableSwaggerBootstrapUI public class Swagger2Config { @Bean public UiConfiguration uiConfiguration(){ return UiConfigurationBuilder.builder().supportedSubmitMethods(new String[]{}) .displayOperationId(true) .build(); } @Bean(value = "defaultApi") @Order(value = 4) public Docket defaultApi(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.nanc.modules")) .paths(PathSelectors.any()) .build() .globalOperationParameters(parameters()) .securityContexts(Lists.newArrayList(securityContext())) .securitySchemes(Lists.<SecurityScheme>newArrayList(apiKey())); } /** * 额外添加的请求头信息 * @return */ private List<Parameter> parameters(){ Parameter parameter1 = new ParameterBuilder() .name("token").description("token令牌").modelRef(new ModelRef("String")) .parameterType("header") .required(false).build(); return Lists.<Parameter>newArrayList(parameter1); } private ApiInfo groupApiInfo(){ return new ApiInfoBuilder() .title("swagger-bootstrap-ui很棒~~~!!!") .description("<div style='font-size:14px;color:red;'>swagger-bootstrap-ui-demo RESTful APIs</div>") .termsOfServiceUrl("http://www.group.com/") .contact("group@qq.com") .version("1.0") .build(); } private ApiInfo apiInfo(){ return new ApiInfoBuilder() .title("swagger-bootstrap-ui RESTful APIs") .description("swagger-bootstrap-ui") .termsOfServiceUrl("http://localhost:8888/") .contact(new Contact("nanc","http://localhost:8888/","nunchan@qq.com")) .version("1.0") .build(); } private ApiKey apiKey(){ return new ApiKey("BearerToken", "Authorization", "header"); } private SecurityContext securityContext(){ return SecurityContext.builder() .securityReferences(defaultAuth()) .forPaths(PathSelectors.regex("/.*")) .build(); } private List<SecurityReference> defaultAuth(){ AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; authorizationScopes[0] = authorizationScope; return Lists.newArrayList(new SecurityReference("Authorization", authorizationScopes)); } }
-
添加配置(在application.yml中配置)
#swagger的配置 swagger: #正式线上,修改为true,就无法访问文档了 production: false #其他的markdown文档地址 markdowns: classpath:swaggermarkdown/* basic: enable: true username: xxx password: xxx
-
实体注解类
@Data @TableName("my_test") @ApiModel(value = "测试实体类", description = "测试实体类,可以有很长的一段描述信息") public class MyTest implements Serializable { private static final long serialVersionUID = -7446660454232128458L; @TableId(value = "id", type = IdType.AUTO) private Integer id; @ApiModelProperty(value = "手机号", required = true) private String mobile; private String name; }
-
控制层注解类
@Slf4j @RestController @RequestMapping("/test") @Api(value = "测试", tags = "测试") @ApiSort(1) public class MyTestController { @Autowired private MyTestService myTestService; @ApiResponses({ @ApiResponse(code=200, message = "新增成功"), @ApiResponse(code=404, message = "参数有误")}) @ApiOperation(value = "新增", notes = "新增数据", response = Boolean.class) @PostMapping("/add") public Boolean add(@RequestBody MyTest myTest){ MyTest mytest = myTestService.add(myTest); return mytest.getId() > 0 ? true : false; } @ApiOperation(value = "列表", notes = "查看列表数据", responseContainer = "List", response = MyTest.class) @GetMapping("/list") public List<MyTest> test(){ List<MyTest> list = myTestService.list(); return list; } }
-
访问地址
http://xxxxx/doc.html
网友评论