1、Swagger
(1)前后端分離
vue + SpringBoot
后端時代:前端只用管理靜態頁面;:html==>后端。模板引擎JSP=>后端是主力
2、Swagger的使用
(1)新建一個springboot項目
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency>
(2)書寫一個controller
@RestController public class SwaggerController { @RequestMapping("hello") public String test(){ return "hello"; } }
(3)集成swagger
@Configuration @EnableSwagger2 public class SwaggerConfig { }
(4)訪問swagger-ui頁面
(5)配置
@Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket docket() {//將默認的配置信息給覆蓋掉 return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()); } private ApiInfo apiInfo() { //作者信息 Contact contact=new Contact("zhai","https://www.cnblogs.com/zhai1997/","3428834830@qq.com"); return new ApiInfo( "zhai的swagger", "懷夢想,致遠方", "1.1.2", "https://www.cnblogs.com/zhai1997/", contact, "2.0", "https://www.cnblogs.com/zhai1997/", new ArrayList<>() ); } }
(6)測試
(6)配置掃描接口及開關
public class SwaggerConfig { @Bean public Docket docket() {//將默認的配置信息給覆蓋掉 return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) //是否啟用Swagger,如果為false則不能在瀏覽器中訪問Swagger .enable(true) .select() //basePackage指定要掃描的包 //any:所有 .apis(RequestHandlerSelectors.basePackage("com.zhb.controller")) //過濾路徑 //.paths(PathSelectors.ant("/com/**")) .build(); } private ApiInfo apiInfo() { //作者信息 Contact contact=new Contact("zhai","https://www.cnblogs.com/zhai1997/","3428834830@qq.com"); return new ApiInfo( "zhai的swagger", "懷夢想,致遠方", "1.1.2", "https://www.cnblogs.com/zhai1997/", contact, "2.0", "https://www.cnblogs.com/zhai1997/", new ArrayList<>() ); } }
3、API文檔的分組
(1)配置一個API分組
@Bean public Docket docket() {//將默認的配置信息給覆蓋掉 return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .groupName("zhai") //是否啟用Swagger,如果為false則不能在瀏覽器中訪問Swagger .enable(true) .select() //basePackage指定要掃描的包 //any:所有 .apis(RequestHandlerSelectors.basePackage("com.zhb.controller")) //過濾路徑 //.paths(PathSelectors.ant("/com/**")) .build(); }
測試結果:
(2) 多個分組,需要多個Docket實例
4、給實體類添加注釋
(1)創建實體類並添加注釋
@ApiModel("用戶") public class User { @ApiModelProperty("用戶名") public String username; @ApiModelProperty("密碼") public String password; }
在controller中返回的是一個Student類型的數據:
@PostMapping("hello1") public User test1(){ return new User(); }
5、給controller的方法添加注釋
@ApiOperation("hello的控制類") @GetMapping("hello2") public String hello(String username){ return username+"你好"; }
6、測試功能
(1)書寫controller
@GetMapping("hello2") public String hello(String username){ return username+"你好"; }
點擊tryit out:
輸入數據進行測試:
測試結果:
(2)異常提示
故意制造異常:
@GetMapping("hello2") public String hello(String username){ int i=100/0; return username+"你好"; }
- 我們可以通過Swagger給一些比較難理解的屬性或者接口,增加注釋信息
- 接口文檔實時更新
- 可以在線測試