作用:
1. 接口的文档在线自动生成。
2. 功能测试。
Swagger使用的注解及其说明:
@Api:用在类上,说明该类的作用。 @ApiOperation:注解来给API增加方法说明。 @ApiImplicitParams : 用在方法上包含一组参数说明。 @ApiImplicitParam:用来注解来给方法入参增加说明。 参数: ·paramType:指定参数放在哪个地方 ··header:请求参数放置于Request Header,使用@RequestHeader获取 ··query:请求参数放置于请求地址,使用@RequestParam获取 ··path:(用于restful接口)-->请求参数的获取:@PathVariable ··body:(不常用) ··form(不常用) ·name:参数名 ·dataType:参数类型 ·required:参数是否必须传(true | false) ·value:说明参数的意思 ·defaultValue:参数的默认值 @ApiResponses:用于表示一组响应 @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息 ——code:数字,例如400 ——message:信息,例如"请求参数异常!" ——response:抛出异常的类 @ApiModel:描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候) @ApiModelProperty:描述一个model的属性
<!-- swagger2--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> <exclusions> <exclusion> <groupId>io.swagger</groupId> <artifactId>swagger-annotations</artifactId> </exclusion> <exclusion> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> </exclusion> </exclusions> </dependency>
/** * Swagger2的接口配置 * * @author shilinxie */ @Configuration @EnableSwagger2 public class SwaggerConfig { /** 系统基础配置 */ @Autowired private RuoYiConfig ruoYiConfig; /** 是否开启swagger */ @Value("${swagger.enabled}") private boolean enabled; /** * 创建API */ @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) // 是否启用Swagger .enable(enabled) // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息) .apiInfo(apiInfo()) // 设置哪些接口暴露给Swagger展示 .select() // 扫描所有有注解的api,用这种方式更灵活 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) // 扫描指定包中的swagger注解 //.apis(RequestHandlerSelectors.basePackage("com.ruoyi.project.tool.swagger")) // 扫描所有 .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build(); } /** * 添加摘要信息 */ private ApiInfo apiInfo() { // 用ApiInfoBuilder进行定制 return new ApiInfoBuilder() // 设置标题 .title("标题:XXXXXX") // 描述 .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...") // 作者信息 .contact(new Contact(ruoYiConfig.getName(), null, null)) // 版本 .version("版本号:" + ruoYiConfig.getVersion()) .build(); } }
/** * @Auther: shilinxie * @Description:Swagger 示例 */ @RestController @RequestMapping("/oss") @Api(value = "Swagger 示例",description = "用来演示Swagger的一些注解") public class TestController { @ApiOperation(value="修改用户密码", notes="根据用户id修改密码") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "userId", value = "用户ID", required = true, dataType = "Integer"), @ApiImplicitParam(paramType="query", name = "password", value = "旧密码", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "newPassword", value = "新密码", required = true, dataType = "String") }) @RequestMapping("/updatePassword") public String updatePassword(@RequestParam(value="userId") Integer userId, @RequestParam(value="password") String password, @RequestParam(value="newPassword") String newPassword){ if(userId <= 0 || userId > 2){ return "未知的用户"; } if(StringUtils.isEmpty(password) || StringUtils.isEmpty(newPassword)){ return "密码不能为空"; } if(password.equals(newPassword)){ return "新旧密码不能相同"; } return "密码修改成功!"; } }
原文:https://www.cnblogs.com/xieshilin/p/13345477.html