Only老K说-Swagger配置文件使用

接上一篇博客继续

Only老K说-Swagger

Swagger配置扫描接口

扫描接口方式

    public Docket getDocket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                /*RequestHandlerSelectors:配置扫描接口的方式
                 * basePackage:指定扫描的包
                 * any:扫描全部
                 * none:不扫描
                 * withClassAnnotation:扫描类上的注解,参数为一个注解的反射对象  .apis(RequestHandlerSelectors.withClassAnnotation(Controller.class))
                 * withMethodAnnotation:扫描方法上的注解  .apis(RequestHandlerSelectors.withMethodAnnotation(RequestMapping.class))*/
                .apis(RequestHandlerSelectors.basePackage("com.onlyk.swaggerdome.controller"))
                .build();
    }

这里能够看的到只还有一个了…
在这里插入图片描述
上面注释内容
在这里插入图片描述

扫描过滤路径

    public Docket getDocket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                /*RequestHandlerSelectors:配置扫描接口的方式
                 * basePackage:指定扫描的包
                 * any:扫描全部
                 * none:不扫描
                 * withClassAnnotation:扫描类上的注解,参数为一个注解的反射对象
                 * withMethodAnnotation:扫描方法上的注解*/
                .apis(RequestHandlerSelectors.basePackage("com.onlyk.swaggerdome.controller"))
                /*paths():过滤路径*/
       .paths(PathSelectors.ant("/action"))
                .build();
    }

只扫描action下面的路径。结果就是啥都扫描不到。我就不测试了

是否启动Swagger

    public Docket getDocket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                /*.enable(false):是否启用swagger  如果为false,浏览器中不能访问(默认为true)*/
                .enable(flag)
                .select()
                /*RequestHandlerSelectors:配置扫描接口的方式
                 * basePackage:指定扫描的包
                 * any:扫描全部
                 * none:不扫描
                 * withClassAnnotation:扫描类上的注解,参数为一个注解的反射对象
                 * withMethodAnnotation:扫描方法上的注解*/
                .apis(RequestHandlerSelectors.basePackage("com.onlyk.swaggerdome.controller"))
                /*paths():过滤路径*/
//       .paths(PathSelectors.ant("/action"))
                .build();
    }

在这里插入图片描述
这里有个衍生问题放在下面…

配置项目分组

   public Docket getDocket(Environment environment){//获取项目环境需要使用Environment
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .groupName("only老K") //swagger信息(ApiInfo)中的name成员变量(不同的开发者信息就需要设置多个ApiInfo在不同的Docket实例中获取)
                /*.enable(false):是否启用swagger  如果为false,浏览器中不能访问(默认为true)*/
                .select()
                /*RequestHandlerSelectors:配置扫描接口的方式
                 * basePackage:指定扫描的包
                 * any:扫描全部
                 * none:不扫描
                 * withClassAnnotation:扫描类上的注解,参数为一个注解的反射对象
                 * withMethodAnnotation:扫描方法上的注解*/
                .apis(RequestHandlerSelectors.basePackage("com.onlyk.swaggerdome.controller"))
                /*paths():过滤路径*/
//       .paths(PathSelectors.ant("/action"))
                .build();
    }

在这里插入图片描述
这里又有一个衍生问题。也放下面

实体类配置

在这里插入图片描述

注解使用

在这里插入图片描述

衍生问题

一般的我们只是在项目开发的时候才会去使用到api来进行对接,所以我们怎么在特定的情况下来合理使用Swagger
从上面我们可以知道的是我们可以使用.enable()方法来控制是否使用SWagger

   public Docket getDocket(Environment environment){//获取项目环境需要使用Environment
        /*设置需要显示的swagger环境*/
        Profiles profiles =Profiles.of("dev","test");
/*        environment.getActiveProfiles();//获得激活的文件
        environment.getDefaultProfiles();//获得默认的文件*/
        //通过environment.acceptsProfiles 来判断是否处在自己设定的环境中
        boolean flag = environment.acceptsProfiles(profiles);//获取的监听的文件
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .groupName("only老K") //swagger信息(ApiInfo)中的name成员变量(不同的开发者信息就需要设置多个ApiInfo在不同的Docket实例中获取)
                /*.enable(false):是否启用swagger  如果为false,浏览器中不能访问(默认为true)*/
                .enable(flag)
                .select()
                /*RequestHandlerSelectors:配置扫描接口的方式
                 * basePackage:指定扫描的包
                 * any:扫描全部
                 * none:不扫描
                 * withClassAnnotation:扫描类上的注解,参数为一个注解的反射对象
                 * withMethodAnnotation:扫描方法上的注解*/
                .apis(RequestHandlerSelectors.basePackage("com.onlyk.swaggerdome.controller"))
                /*paths():过滤路径*/
//       .paths(PathSelectors.ant("/action"))
                .build();
    }

这里还需要使用到配置文件,不然没有地方获取到环境数据哦
在这里插入图片描述
重新启动运行即可
在这里插入图片描述

衍生问题2

怎么创建多个分组?每个人的接口都不一样呀!是不可能都放在一个用户下面的哦

在配置文件中配置多个Docket实例

    //配置多个Docket实例
    @Bean
    public Docket getDocket1(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("King");
    }
    @Bean
    public Docket getDocket2(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("老K");
    }
    @Bean
    public Docket getDocket3(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("Only");
    }

在这里插入图片描述

最后关于注解使用

package com.onlyk.swaggerdome.bean;

import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiParam;

/**
 * @author only老K 我为自己代言
 * @create 2020-07-05 22:33
 * @blogaddress https://blo g.csdn.net/weixin_44255950
 */

@ApiModel("测试实体类 ")
public class Dome {
    @ApiModelProperty("用户名")
    public String user;
    @ApiModelProperty("密码")
    public String pwd;
}

在这里插入图片描述

package com.onlyk.swaggerdome.controller;

import com.onlyk.swaggerdome.bean.Dome;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.catalina.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author only老K 我为自己代言
 * @create 2020-07-02 19:35
 * @blogaddress https://blog.csdn.net/weixin_44255950
 */

@Controller
public class swaggerController {
    @RequestMapping("/hello")
    @ResponseBody
    public String helloSwagger(){
        return "hello Swagger";
    }
    //只要我放回结果中有实体类就会扫描到
    @RequestMapping("/dome")
    @ResponseBody
    public Dome dome(){
        return new Dome();
    }
    //Operation接口
    @PostMapping("/test")
    @ApiOperation("hello控制类接口 ")
    public String hello(@ApiParam("用户名") String name){
        return "hello"+name;
    }
}

以及可以像PostMan一样的测试(自己弯弯就会了)
在这里插入图片描述
end…放在草稿箱有几天了才更新完。还有一个写了更加久的还没有写完呢....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值