11 — springboot集成swagger — 更新完毕

1、前言

  • 理论知识滤过,自行百度百科swagger是什么

2、导入依赖


        <!--        swagger所需要的依赖-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
        </dependency>
        <!--        这个依赖是为了渲染swagger文档页面的( 为了好看一点罢了 ) ,swagger真正的依赖是上面两个-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.8.5</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.75</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

4、编写swagger配置文件

11 — springboot集成swagger — 更新完毕


package cn.xiegongzi.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration      // 把当前类丢到spring容器中去
@EnableSwagger2     // 开启swagger功能
public class SwaggerConfig {

    @Bean
    public Docket createRestApi() {
        // http://ip地址:端口/项目名/swagger-ui.html#/
        ApiInfo apiInfo = new ApiInfoBuilder()
                .title( "悠忽有限公司" )             // 网站标题    即:生成的文档网址标题
                .description( "这是一个很nice的接口文档" )        // 网站描述     即:对生成文档的描述
                .version( "9.0" )                 // 版本
                .contact( new Contact("紫邪情","https://www.cnblogs.com/xiegongzi/","110" ) )   // 联系人
                .license( "tcp" )             // 协议  http / https都可以
                .licenseUrl( "http://localhost:8080/" )   // 协议url 即:进入到swagger文档页面的地址
                .build();
        return new Docket( DocumentationType.SWAGGER_2 ) // swagger版本
                .pathMapping( "/" )         // 请求映射路径  就是:controller中有一个接口,然后前台访问的那个接口路径
                                             // 这个可以在生成的文档中进行调试时看到
                .select()           // 根据pathMapping去进行查询( 做相应的操作 )
                // 扫描包   即:哪些地方可以根据我们的注解配置帮我们生成文档
                .apis( RequestHandlerSelectors.basePackage( "cn.xiegongzi" ) )
                .paths( PathSelectors.any() )
                .build()
                .apiInfo( apiInfo );
    }

}

5、编写yml文件


spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis_spring?useUnicode=true&characterEncoding=utf-8
    username: root
    password: "072413"

6、编写实体类


package cn.xiegongzi.entity;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@AllArgsConstructor
@NoArgsConstructor

@ApiModel       // 表明这个实体类也可以生成到swagger文档中去  即:后台要接收的参数是一个对象时使用 —— 这个东西可以先不加,在做增加、修改时可以用这个测试一下,从而去swagger中看效果
public class User implements Serializable {

    @ApiModelProperty       // 表明:要生成的实体类属性是注解下的这个
    private Integer id;

    @ApiModelProperty
    private String username;

    @ApiModelProperty
    private String phone;
}

7、编写mapper


package cn.xiegongzi.mapper;

import cn.xiegongzi.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface IUserMapper {

    @Select("select * from user")
    List<User> findAllUser();
}

8、编写service接口和实现类

11 — springboot集成swagger — 更新完毕

9、编写controller

11 — springboot集成swagger — 更新完毕


package cn.xiegongzi.controller;

import cn.xiegongzi.service.IUserService;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Api(tags = "用户管理接口集")        // 表示当前类可以被生成一个swagger文档 , 可以跟参数tags,参数表示:这整个接口类的名字
public class UserController {

    @Autowired
    private IUserService userService;


    // @ApiImplicitParam 这个注解是对请求参数做限制用的,如:请求时要求前台传递一个id,那么:在这个注解里面:就可以声明这个参数的类型、
    // 是否为必填.....
    @GetMapping("/swaggger/doc")   // 遵循restful风格  要是使用@RequestMapping的话,会生成多个接口( 即:对应post、get.... )
    @ApiOperation(value = "获取全部用户接口" , notes = "获取全部的用户")
                                            // value这个接口的名字
                                            // 对这个接口的描述
    public String findAllUser() {

        return JSON.toJSONString( userService.findAllUser() );
    }
}

10、启动项目,测试

11 — springboot集成swagger — 更新完毕

11 — springboot集成swagger — 更新完毕

结语:

  • 以上的内容是入门,其他的注解开发时自行摸索吧!
  • 还有一种,比swagger更好,就是:postman,自行下载安装包,安装之后玩一下
上一篇:解决swagger的类型转换报错问题


下一篇:Swagger2