欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

记录我的Swagger学习与使用

程序员文章站 2022-07-07 13:38:30
...

Swagger的学习

Swagger是一款 前端和后端交互的接口文档框架,你只需要按照他的规范去定义接口及接口相关的信息,

其可以生成一个html页面,供我们查看接口信息。

1.引入依赖

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

2.编写SwaggerConfig类

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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;
import java.util.ArrayList;


@Configuration
@EnableSwagger2 //开启swagger功能
public class SwaggerConfig {

    @Bean
    public Docket docket(){
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .groupName("刘哈哈")
                .select()
                /*
                *RequestHandlerSelectors  配置要扫描接口的方式
                * any 扫描全部
                * none 不扫描
                * withMethodAnnotation 扫描方法上的注解
                * withClassAnnotation 扫描类上的注解
                * basePackage 指定要扫描的包
                * */
              .apis(RequestHandlerSelectors.basePackage("com.liu.exam.controller"))
                //过滤什么路径
			   //.paths(PathSelectors.ant("/user/**"))
                .build();
        return docket;
    }
    @Bean
    public Docket docket2(){
       return new Docket(DocumentationType.SWAGGER_2)
                .groupName("雷霆嘎巴");
    }

    private ApiInfo apiInfo(){
       return new ApiInfo(
                "刘哈哈的SwaggerApi文档",
                "要得到你想要的某样东西,最好的办法是让你自己配得上它",
                "1.0",
                "https://www.csdn.net/",
                new Contact("刘哈哈", "", "aaa@qq.com"), //作者信息
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }
}

3.swagger中使用注解

@ApiOperation("") 加在请求方法上,描述请求方法,会在swagger页面中显示

@ApiParam("") 加在请求参数上,描述参数信息

只要我们的返回值中存在User对象,那么这个实体类就会被加到swagger中,会在swagger页面中显示

@PostMapping("/save")
@ResponseBody
@ApiOperation("保存用户")
public User save( @ApiParam("年龄") Integer age,@ApiParam("姓名")String name){
    //只要我们的返回值中存在User对象,那么这个实体类就会被加到swagger中
    return userService.save(new User(age,name));
}

​ @ApiModel("") 加在实体类上,描述实体类信息

​ @ApiModelProperty("") 加载实体类的属性字段上,描述字段信息

@Entity
@Table(name = "t_shanxi")
@ApiModel("用户实体类")
public class User {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @ApiModelProperty("id")
        private Long id;
        @ApiModelProperty("年龄")
        private Integer age;
        @ApiModelProperty("姓名")
        private String name;
}

在浏览器访问 : http://localhost:8080/swagger-ui.html

记录我的Swagger学习与使用
记录我的Swagger学习与使用

记录我的Swagger学习与使用