一、匯入maven包
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>
二、添加工具類
@Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .pathMapping("/") .select() .apis(RequestHandlerSelectors.basePackage("com.nvn.controller")) .paths(PathSelectors.any()) .build().apiInfo(new ApiInfoBuilder() .title("SpringBoot整合Swagger") .description("SpringBoot整合Swagger,詳細資訊......") .version("1.0") .build()); } }
三、添加注解
@RestController @Api(tags = "用戶管理相關介面") @RequestMapping("/user") public class UserController { @PostMapping("/") @ApiOperation("添加用戶的介面") @ApiImplicitParams({ @ApiImplicitParam(name = "username", value = "https://www.cnblogs.com/taoyao/p/用戶名", defaultValue = "https://www.cnblogs.com/taoyao/p/李四"), @ApiImplicitParam(name = "address", value = "https://www.cnblogs.com/taoyao/p/用戶地址", defaultValue = "https://www.cnblogs.com/taoyao/p/深圳", required = true) } ) public RespBean addUser(String username, @RequestParam(required = true) String address) { return new RespBean(); } @GetMapping("/") @ApiOperation("根據id查詢用戶的介面") @ApiImplicitParam(name = "id", value = "https://www.cnblogs.com/taoyao/p/用戶id", defaultValue = "https://www.cnblogs.com/taoyao/p/99", required = true) public User getUserById(@PathVariable Integer id) { User user = new User(); user.setId(id); return user; } @PutMapping("/{id}") @ApiOperation("根據id更新用戶的介面") public User updateUserById(@RequestBody User user) { return user; } }
四、注解說明
- @Api注解可以用來標記當前Controller的功能,
- @ApiOperation注解用來標記一個方法的作用,
- @ApiImplicitParam注解用來描述一個引數,可以配置引數的中文含義,也可以給引數設定默認值,這樣在介面測驗的時候可以避免手動輸入,
- 如果有多個引數,則需要使用多個@ApiImplicitParam注解來描述,多個@ApiImplicitParam注解需要放在一個@ApiImplicitParams注解中,
- @ApiImplicitParam注解中雖然可以指定引數是必填的,但是卻不能代替@RequestParam(required = true),前者的必填只是在Swagger2框架內必填,拋棄了Swagger2,這個限制就沒用了,所以假如開發者需要指定一個引數必填,@RequestParam(required = true)注解還是不能省略,
五、如果引數是一個物件,對于引數的描述可以放在物體類中,
@ApiModel public class User { @ApiModelProperty(value = "用戶id") private Integer id; @ApiModelProperty(value = "用戶名") private String username; @ApiModelProperty(value = "用戶地址") private String address; //getter/setter }
六、效果

附:如果我們的Spring Boot專案中集成了Spring Security,那么如果不欄位外配置,Swagger2檔案可能會被攔截,此時只需要在Spring Security的配置類中重寫configure方法,添加如下過濾即可:
@Override public void configure(WebSecurity web) throws Exception { web.ignoring() .antMatchers("/swagger-ui.html") .antMatchers("/v2/**") .antMatchers("/swagger-resources/**"); }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/204500.html
標籤:Java
上一篇:閱讀Java原始碼之ThreadPoolExecutor
下一篇:書城專案:第4階段
