• Spring Boot整合Spring Fox生成Swagger文档


    Spring Fox简介

    Springfox是一个用于在Spring应用程序中生成Swagger文档的开源库。它提供了一组注解和工具,可以将你的API代码和文档整合在一起,方便生成和展示API的Swagger文档。

    使用Springfox,你可以在Spring Boot项目中集成Swagger,并通过Swagger UI查看和测试API。它提供了一些注解,如 @Api@ApiOperation@ApiParam 等,用于定义API的基本信息、操作和参数。通过这些注解,你可以准确地描述每个API的功能、输入和输出,生成详细的API文档

    Springfox还提供了一些可自定义的配置选项,你可以根据需要进行配置,以满足特定的文档需求。例如,你可以配置文档的标题、描述、版本号等信息,控制哪些API暴露给Swagger进行文档生成,以及如何处理请求和响应的数据类型等。

    Springfox是一个用于在Spring应用程序中生成Swagger文档的工具库,它简化了API文档的生成和管理过程,使开发人员能够更轻松地创建和维护API文档。

    案例

    在此基础之上,我们添加相关依赖:

    	<dependencies>
    		<dependency>
    			<groupId>org.springframework.bootgroupId>
    			<artifactId>spring-boot-starter-webartifactId>
    		dependency>
    
    		<dependency>
    			<groupId>org.springframework.bootgroupId>
    			<artifactId>spring-boot-starter-testartifactId>
    			<scope>testscope>
    		dependency>
    
    		<dependency>
    			<groupId>io.springfoxgroupId>
    			<artifactId>springfox-boot-starterartifactId>
    			<version>3.0.0version>
    		dependency>
    	dependencies>
    
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.springframework.bootgroupId>
    				<artifactId>spring-boot-maven-pluginartifactId>
    			plugin>
    		plugins>
    	build>
    
    	<repositories>
    		<repository>
    			<snapshots>
    				<enabled>falseenabled>
    			snapshots>
    			<id>jcenter-releasesid>
    			<name>jcentername>
    			<url>http://jcenter.bintray.comurl>
    		repository>
    	repositories>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    利用相关注解在实体类进行相关校验,这里也使用Spring Boot中使用JSR-303实现请求参数校验的JSR-303校验,如果不了解JSR-303校验的可以去了解一下。

    @ApiModel("用户基本信息")
    public class User {
    
        @ApiModelProperty("姓名")
        @Size(max = 20)
        private String name;
        @ApiModelProperty("年龄")
        @Max(150)
        @Min(1)
        private Integer age;
        @NotNull
        private String address;
        @Pattern(regexp = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$")
        private String email;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    ", address='" + address + '\'' +
                    ", email='" + email + '\'' +
                    '}';
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            User user = (User) o;
            return Objects.equals(name, user.name) && Objects.equals(age, user.age) && Objects.equals(address, user.address) && Objects.equals(email, user.email);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(name, age, address, email);
        }
    
        public User(String name, Integer age, String address, String email) {
            this.name = name;
            this.age = age;
            this.address = address;
            this.email = email;
        }
    
        public User() {
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80

    此外启动类也需要加一个@EnableOpenApi注解。

    接下来我们就在UserController类里边使用相关注解完成我们的SpringFox和Swagger文档生成:

    @Api(tags="用户管理")
    @RestController
    public class UserController {
    
        @ApiOperation("创建用户")
        @PostMapping("/users")
        public User create(@RequestBody @Valid User user) {
            return user;
        }
    
        @ApiOperation("用户详情")
        @GetMapping("/users/{id}")
        public User findById(@PathVariable Long id) {
            return new User("bbb", 21, "上海", "aaa@bbb.com");
        }
    
        @ApiOperation("用户列表")
        @GetMapping("/users")
        public List<User> list(@ApiParam("查看第几页") @RequestParam int pageIndex,
                               @ApiParam("每页多少条") @RequestParam int pageSize) {
            List<User> result = new ArrayList<>();
            result.add(new User("aaa", 50, "北京", "aaa@ccc.com"));
            result.add(new User("bbb", 21, "广州", "aaa@ddd.com"));
            return result;
        }
    
        @ApiIgnore
        @DeleteMapping("/users/{id}")
        public String deleteById(@PathVariable Long id) {
            return "delete user : " + id;
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    1. 启动项目
    2. 浏览器访问:http://localhost:8080/swagger-ui.html
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
  • 相关阅读:
    2022年12月编程语言排行榜,数据来了!
    大学里遗憾的事,希望你无怨也无悔
    Go语言网络编程(socket编程)TCP粘包
    java-php-python-ssm学术会议论文稿件管理系统计算机毕业设计
    Nacos的介绍和使用Docker、MySQL持久化挂载安装
    windows下OpenNN的编译与使用
    【干活推送 】人工智能(AI)教程
    了解基于Elasticsearch 的站内搜索,及其替代方案
    E. 矩阵第k大
    node插件MongoDB(二)——MongoDB的基本命令
  • 原文地址:https://blog.csdn.net/qq_45922256/article/details/134056825