Swagger是什么?

官方说法:Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 是一款RESTFUL接口的、基于YAML、JSON语言的文档在线自动生成、代码自动生成的工具。

简介介绍功能:

  1. 环境集成
  2. 功能介绍
  3. 文档编写
  4. 代码生成
  5. 自定义代码生成模板

官网:https://swagger.io/

想访问接口时,先访问swagger UI界面?

例如:http://localhost:9091/swagger-ui.html#/

集成步骤:

1、进入 https://swagger.io/docs/open-source-tools/swagger-editor/ ,有两种集成方式。

  01.远程集成方式

Swagger 小总结

  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;
    }
}

 

 

相关文章: