swagger 简介
swagger是一组开源项目,其中主要项目及功能如下:
- 1.Swagger codegen:通过Codegen可以将描述文件生成HTML格式和cwiki形式的接口文档,
- 同时也能生成多种语言的服务端和客户端代码。支持通过jar包,docker,node等方式在本地化执行生成,也可以在后面SwaggerEditor在线生成
- 2.Swagger UI:提供了一个可视化的UI页面展示描述文件。接口的调用方,测试,项目经理等都可以在该项目中对相关接口进行查阅和做一些简单的接口请求。该项目支持在线导入描述文件和本地部署UI项目
- 3.Swagger Editor:类似于markendown编辑器的编辑Swagger描述文件的编辑器,该编辑器支持实时预览描述文件的更新效果
- 4、Swagger Inspector: 感觉和postman差不多,是一个可以对接口进行测试的在线版的postman。比在Swagger UI里面做接口请求,会返回更多的信息,也会保存你请求的实际请求参数等数据。
- 5、Swagger Hub:集成了上面所有项目的各个功能,你可以以项目和版本为单位,将你的描述文件上传到Swagger Hub中。在Swagger Hub中可以完成上面项目的所有工作,需要注册账号,分免费版和收费版。
- Springfox Swagger: Spring 基于swagger规范,可以将基于SpringMVC和Spring Boot项目的项目代码,自动生成JSON格式的描述文件。本身不是属于Swagger官网提供的,在这里列出来做个说明,方便后面作一个使用的展开。
swagger配置
//声明这是一个配置类
@Configuration
//开启swagger注解功能
@EnableSwagger2
public class Swagger2 {
//将其生成一个bean,交给是springboot管理,实现控制反转
@Bean
public Docket createRestApi1() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo1()).select()
//使用注解
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
//包
.apis(RequestHandlerSelectors.basePackage("com.ye.yeblogs.controller"))
//配置多个不同组
.paths(PathSelectors.regex("/user/.*"))
.build()
.groupName("门户接口");
}
private ApiInfo apiInfo1() {
return new ApiInfoBuilder()
.title("博客系统测试")
.description("门户接口测试")
//创建人
.contact(new Contact("yeyeye", "", "py_boy@qq.com"))
.version("1.0")
.build();
}
@Bean
public Docket createRestApi2() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo2()).select()
//使用注解
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
//包
//.apis(RequestHandlerSelectors.basePackage("com.ye.yeblogs.controller"))
//配置多个不同组
.paths(PathSelectors.regex("/admin/.*"))
.build()
//配置组的名称
.groupName("后台接口");
}
private ApiInfo apiInfo2() {
return new ApiInfoBuilder()
.title("博客系统测试")
.description("后台接口测试")
//创建人
.contact(new Contact("yeyeye", "", "py_boy@qq.com"))
.version("1.0")
.build();
}
}
swagger注解运用到controller
@RestController
@Api(tags = "这个类的标签")
@RequestMapping(value = "/test", method = RequestMethod.GET)
public class UserController {
@ApiOperation(value = "描述接口作用", notes = "对接口的额外说明", response = String.class)
@ApiImplicitParam(name = "te", value = "解析该参数作用..", required = true, dataType = "String", paramType = "path")
@RequestMapping(value = "/test")
public String test (String te) {
return "tets"+te;
}
}