Swagger使用
1.1 添加依赖
io.springfox
springfox-swagger-ui
2.9.2
io.springfox
springfox-swagger2
2.9.2
com.baomidou
mybatisplus-spring-boot-starter
1.0.5
com.baomidou
mybatis-plus-boot-starter
3.1.0
1.2 配置类
Application类配置
@SpringBootApplication
@MapperScan("com.nut.mybatisplus.mapper") //配置MyBatisPlus扫描的mapper目录
public class MybatisplusApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisplusApplication.class, args);
}
}
Swagger2配置类,需要放置在和Application类的同级目录
@Configuration
@EnableSwagger2
public class Swagger2 {
/**
* 创建API应用
* apiInfo() 增加API相关信息
* 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
* 本例采用指定扫描的包路径来定义指定要建立API的目录。
*
* @return
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
// .apis(RequestHandlerSelectors.basePackage("com.nut.mybatisplus"))
//扫描所有有注解的api,用这种方式更灵活
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build();
}
/**
* 创建该API的基本信息(这些基本信息会展现在文档页面中)
* 访问地址:http://项目实际地址/swagger-ui.html
*
* @return
*/
private ApiInfo apiInfo() {
Contact contact = new Contact("maomao", "http://www.baidu.com", "[email protected]");
return new ApiInfoBuilder()
.title("Swagger API")
.description("更多请关注http://www.baidu.com")
.termsOfServiceUrl("http://www.baidu.com")
.contact(contact)
.version("1.0")
.build();
}
}
application.properties文件mybatis plus的全局配置
#mybatisplus
mybatis-plus.mapper-locations = classpath*:mybatis/*.xml
#实体扫描,多个package用逗号或者分号分隔
mybatis-plus.type-aliases-package = com.nut.mybatisplus.bean
#默认表前缀
mybatis-plus.global-config.db-config.table-prefix = tbl_
#默认的ID类型
mybatis-plus.global-config.db-config.id-type = AUTO
mybatis-plus.global-config.db-config.field-strategy = not_null
#自动刷新xml,生产环境关闭
mybatis-plus.global-config.refresh = true
#驼峰下划线转换
mybatis-plus.configuration.mapUnderscoreToCamelCase = true
# 配置sql打印日志
mybatis-plus.configuration.log-impl = org.apache.ibatis.logging.stdout.StdOutImpl
Mappger配置,继续BaseMapper即可,不需要多余的代码
public interface UserMapper extends BaseMapper {
}
使用Swagger注解Controller
@Controller
@Api(value = "/api/user",tags = "用户接口测试",description = "用户接口")
@RequestMapping("/api")
public class IndexController {
@Autowired //注入Mapper
EmployeeMapper employeeMapper;
@ResponseBody
@GetMapping("/user/{id}")
@ApiOperation(value="根据用户编号查询用户信息", notes="test: 仅编号存在返回信息")
@ApiImplicitParam(paramType="query", name = "id", value = "用户编号", required = true)
public Employee select(@RequestParam Integer id) {
return employeeMapper.selectById(id);
}
@ResponseBody
@GetMapping("/user/")
@ApiOperation(value="根据用户信息查询用户信息列表", notes="test: 返回结果为符合条件的数据列表")
@ApiImplicitParams( {@ApiImplicitParam(paramType="query", name = "email", value = "用户邮箱", required = true),
@ApiImplicitParam(paramType="query", name = "lastName", value = "用户姓名", required = true)
})
public List list(@RequestParam String email, @RequestParam String lastName) {
Map columnMap = new HashMap<>();
columnMap.put("email", email);
columnMap.put("last_name", lastName);
List employees = employeeMapper.selectByMap(columnMap);
return employees;
}
}
Swagger使用的注解及其说明:
@Api:用在类上,说明该类的作用。
@ApiOperation:注解来给API增加方法说明。
@ApiImplicitParams : 用在方法上包含一组参数说明。
@ApiImplicitParam:用来注解来给方法入参增加说明。
@ApiResponses:用于表示一组响应。
@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息。
l code:数字,例如400
l message:信息,例如"请求参数没填好"
l response:抛出异常的类
@ApiModel:描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)
l @ApiModelProperty:描述一个model的属性
注意:@ApiImplicitParam的参数说明:
paramType:指定参数放在哪个地方 |
header:请求参数放置于Request Header,使用@RequestHeader获取 query:请求参数放置于请求地址,使用@RequestParam获取 path:(用于restful接口)-->请求参数的获取:@PathVariable body:(不常用) form(不常用) |
name:参数名 |
|
dataType:参数类型 |
|
required:参数是否必须传 |
true | false |
value:说明参数的意思 |
|
defaultValue:参数的默认值 |
|
开启服务后访问 http://localhost:8080/swagger-ui.html,查看SwaggerUI