Swagger是什么?
官方说法:Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 是一款RESTFUL接口的、基于YAML、JSON语言的文档在线自动生成、代码自动生成的工具。
简介介绍功能:
- 环境集成
- 功能介绍
- 文档编写
- 代码生成
- 自定义代码生成模板
想访问接口时,先访问swagger UI界面?
例如:http://localhost:9091/swagger-ui.html#/
集成步骤:
1、进入 https://swagger.io/docs/open-source-tools/swagger-editor/ ,有两种集成方式。
01.远程集成方式
02.本地集成方式
基于node.js、npm、http-server。
swagger注解讲解:
@Api:用在类上,说明该类的作用
eg:
@Api(value = "DEMO权限管理",tags = {"DEMO权限管理"})
@RestController
@RequestMapping("/demorole")
@Slf4j
public class DemoRoleController {
}
@ApiOperation:注解来给API增加方法说明
eg: @ApiOperation(value = "查询权限列表", notes = "根据用户名称查询权限列表")
@ApiImplicitParams : 用在方法上包含一组参数说明
eg:@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long"),
@ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
})
@ApiImplicitParam:用来注解来给方法入参增加说明
@ApiImplicitParam的参数说明:
paramType:指定参数放在哪个地方:
header:请求参数放置于Request Header,使用@RequestHeader获取
query:请求参数放置于请求地址,使用@RequestParam获取
path:(用于restful接口)-->请求参数的获取:@PathVariable
body:(不常用)
form(不常用)
name:参数名
dataType:参数类型
required:参数是否必须传 true | false
value:说明参数的意思
defaultValue:参数的默认值
eg: @ApiImplicitParam(paramType = "query" ,name = "createUser", value = "用户名称", required = true, dataType = "String")
@ApiResponses:用于表示一组响应
@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
code:数字,例如400
message:信息,例如"请求参数没填好"
response:抛出异常的类
@ApiModel:描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)
@ApiModelProperty:描述一个model的属性
eg:
@ApiModel(value = "DEMO权限")
public class DemoRole {
@ApiModelProperty(value = "id", required = true)
private String id;
@ApiModelProperty(value = "权限编码", required = true)
private String roleCode;
}
一个完整的例子:
@ApiModel(value = "DEMO权限")
public class DemoRole {
@ApiModelProperty(value = "id", required = true)
private String id;
@ApiModelProperty(value = "权限编码", required = true)
private String roleCode;
}
@Api(value = "DEMO权限管理", tags = {"DEMO权限管理"})
@RestController
@RequestMapping("/demorole")
@Slf4j
public class DemoRoleController {
@Autowired
private DemoRoleService demoRoleService;
@ApiOperation(value = "查询权限列表", notes = "根据用户名称查询权限列表")
@ApiImplicitParams({
@ApiImplicitParam(paramType = "query", name = "age", value = "年龄", required = true, dataType = "Integer"),
@ApiImplicitParam(paramType = "query", name = "number", value = "编码", required = true, dataType = "Integer")
})
@ApiImplicitParam(paramType = "query", name = "createUser", value = "用户名称", required = true, dataType = "String")
@RequestMapping(value = "/selectList", method = RequestMethod.POST)
public List<DemoRole> selectByExample(@RequestParam(value = "createUser") String createUser, @RequestParam(value = "age") Integer age, @RequestParam(value = "number") Integer number) {
List<DemoRole> list = demoRoleService.selectByExample(createUser);
list.forEach(item -> {
});
return list;
}
}