(六)SpringBoot整合Swagger2框架
阿新 • • 發佈:2018-09-30
url selector use contact text exceptio pid urn 自動生成
一:什麽是Swagger
Swagger是一款通過我們添加的註解來對方法進行說明,來自動生成項目的在線api接口文檔的web服務。
二:添加Swagger2依賴
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.4.0</version> </dependency>
三:創建Swagger2配置文件
在文件夾configurer中創建SwaggerConfigure
package com.example.demo.core.configurer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; /** * @author * @Description:Swagger2 配置文件 * @time 2018/4/20 22:42 */ @Configuration @EnableSwagger2 public class SwaggerConfigurer { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("mySpringBoot 使用Swagger2構建RESTful APIs") .description("更多Spring Boot相關文章請關註:https://juejin.im/user/59e7fb9451882578e1406a51/posts") .termsOfServiceUrl("https://juejin.im/user/59e7fb9451882578e1406a51/posts") .contact(new Contact("Mr_初晨", "https://gitee.com/beany/mySpringBoot", null)) .version("1.0") .build(); } }
四:修改Controller,添加API註解
package com.example.demo.controller; @RestController @RequestMapping("userInfo") @Api(tags = {"用戶操作接口"}, description = "userInfoControler") public class UserInfoController { @Resource private UserInfoService userInfoService; @PostMapping("/hello") public String hello() { return "hello SpringBoot"; } @ApiOperation(value = "查詢用戶", notes = "根據用戶ID查詢用戶") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "用戶ID", required = true, dataType = "Integer", paramType = "query") }) @PostMapping("/selectById") public RetResult<UserInfo> selectById(@RequestParam Integer id) { UserInfo userInfo = userInfoService.selectById(id); return RetResponse.makeOKRsp(userInfo); } @PostMapping("/testException") public RetResult<UserInfo> testException(Integer id) { List a = null; a.size(); UserInfo userInfo = userInfoService.selectById(id); return RetResponse.makeOKRsp(userInfo); } }
六:解決問題
繼承WebMvcConfigurationSupport
之後,靜態文件映射會出現問題,需要重新指定靜態資源
在WebConfigurer
中添加如下代碼
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("swagger-ui.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); registry.addResourceHandler("/favicon.ico") .addResourceLocations("classpath:/META-INF/resources/favicon.ico"); super.addResourceHandlers(registry); }
訪問地址: localhost:8080/swagger-ui.html
七常用註解
常用註解:
- @Api()用於類;
表示標識這個類是swagger的資源
- @ApiOperation()用於方法;
表示一個http請求的操作
- @ApiParam()用於方法,參數,字段說明;
表示對參數的添加元數據(說明或是否必填等)
- @ApiModel()用於類
表示對類進行說明,用於參數用實體類接收
- @ApiModelProperty()用於方法,字段
表示對model屬性的說明或者數據操作更改
- @ApiIgnore()用於類,方法,方法參數
表示這個方法或者類被忽略
- @ApiImplicitParam() 用於方法
表示單獨的請求參數
- @ApiImplicitParams() 用於方法,包含多個 @ApiImplicitParam
具體使用舉例說明:
@Api()
用於類;表示標識這個類是swagger的資源
tags–表示說明
value–也是說明,可以使用tags替代
(六)SpringBoot整合Swagger2框架