首页 > 其他分享 >Swagger

Swagger

时间:2022-11-19 12:12:04浏览次数:58  
标签:Swagger return Bean swagger Docket public

学习文档:

https://www.cnblogs.com/jiex123/p/13149453.html

https://blog.csdn.net/weixin_57259781/article/details/123506393

学习视频:https://www.bilibili.com/video/BV1Y441197Lw/

 

Swagger官网:https://swagger.io/

Swagger 简介

  Swagger 是一套围绕 Open API 规范构建的开源工具,可以帮助设 计,构建,记录和使用 REST API。

  Swagger 工具包括的组件:

    Swagger Editor  :基于浏览器编辑器,可以在里面编写 Open API规范。类似 Markdown 具有实时预览描述文件的功能。

    Swagger UI:将 Open API 规范呈现为交互式 API 文档。用可视化UI 展示描述文件。

    Swagger Codegen:将 OpenAPI 规范生成为服务器存根和客户端 库。通过 Swagger Codegen 可以将描述文件生成 html 格式和 cwiki 形 式的接口文档,同时也可以生成多种言语的客户端和服务端代码。

    Swagger Inspector:和 Swagger UI 有点类似,但是可以返回更多 信息,也会保存请求的实际参数数据。

    Swagger Hub:集成了上面所有项目的各个功能,你可以以项目 和版本为单位,将你的描述文件上传到 Swagger Hub 中。在 Swagger Hub 中可以完成上面项目的所有工作,需要注册账号,分免费版和收费版。

    使用 Swagger,就是把相关的信息存储在它定义的描述文件里面(yml 或 json 格式),再通过维护这个描述文件可以去更新接口文档, 以及生成各端代码。

 

SpringBoot集成Swagger

1.导入依赖

 在pom.xml文件中导入依赖:
 <!--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.在Config包下面创建类SwaggerConfig:

 @Configuration
 @EnableSwagger2   //开启swagger2
 public class SwaggerConfig {
     
 }

3.测试运行

http://localhost:8080/swagger-ui.html

 

 

 4.配置Swagger

 @Configuration
 @EnableSwagger2   //开启swagger2
 public class SwaggerConfig {
 ​
     //配置了swagger的Docket的bean实例
     @Bean
     public Docket docket(){//该方法返回对象为Docket,并将该对象注入到Bean里面
         return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
     }
 ​
     //配置swagger的信息等于apiInfo
     private ApiInfo apiInfo(){
         //作者信息
         Contact contact = new Contact("作者a","https://blog.kuangstudy.com/","邮箱");
 ​
         return new ApiInfo(
                 "Swagger日志",//标题
                 "nihaoya",//描述
                 "v1.0",//版本
                 "https://blog.kuangstudy.com/",//组织名或者作者信息或者博客网址(一个网址)
                 DEFAULT_CONTACT,
                 "Apache 2.0",
                 "http:www.apache.org/licenses/LICENSE-2.0",
                 new ArrayList()
         );
     };
 }

 

 

 

 再次访问查看:

http://localhost:8080/swagger-ui.html

6.Swagger配置扫描接口

6-1.配置扫描接口Docket.select()

    //配置了swagger的Docket的bean实例
     @Bean
     public Docket docket(){//该方法返回对象为Docket,并将该对象注入到Bean里面
         return new Docket(DocumentationType.SWAGGER_2)
                 .apiInfo(apiInfo())
                 .select()
                 //RequestHandlerSelectors配置要扫描接口的方式.
                 // basePackage()表示指定要扫描的包,参数为包的路径,一般会使用的方法
                 //any()表示扫描所有的包
                 //none()表示所有包都不扫描
                 //withClassAnnotation表示扫描类上面的注解,参数为一个注解的反射对象,值可以为:@GetMapping.class
                 //withMethodAnnotation表示扫描方法上面的注解
//.apis(RequestHandlerSelectors.withClassAnnotation(@GetMapping.class))
.apis(RequestHandlerSelectors.basePackage("com.example.swaggerdemo.controller")) //path表示过滤,常用的为ant() //.paths(PathSelectors.ant("/example/**")) .build(); }

6-2.配置是否启动swagger

    //enable为是否启动swagger,如果为false,则swagger不能在浏览器中访问
     @Bean
     public Docket docket(){//该方法返回对象为Docket,并将该对象注入到Bean里面
         return new Docket(DocumentationType.SWAGGER_2)
                 .apiInfo(apiInfo())
                 .enable(false)  
                 .select()
    .apis(RequestHandlerSelectors.basePackage("com.example.swaggerdemo.controller"))
                 .build();
     }

我的swagger在生产环境中使用,在发布的时候不使用?

判断是不是生产环境 flag=false

注入enable(flag)

进行多配置的方法:

0.在application.propeties设置

spring.profils.active=dev

1.在resources下面新建生产环境文件application-dev.properties 并输入以下内容:

server.port=8081

2.在resources下面新建生产环境文件application-pro.properties 并输入以下内容:

server.port=8082

3.SwaggerConfig设置

 //配置了swagger的Docket的bean实例
 
    @Bean
    public Docket docket(Environment environment){//该方法返回对象为Docket,并将该对象注入到Bean里面
 
        //设置要显示的swagger环境
        Profiles profiles = Profiles.of("dev","test");   //如果application.properties中配置为dev则访问
//获取项目的环境: //通过environment.acceptsProfiles判断是否处在自己设定的环境中 //如果系统检测到当前环境为dev或者test则flag为true,否则为flase boolean flag = environment.acceptsProfiles(profiles); return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .enable(flag) .select() .apis(RequestHandlerSelectors.basePackage("com.example.swaggerdemo.controller")) .build(); }

 

配置API文档的分组

1.只有一个分组:在文件swaggerconfig.java中一定位置加入以下代码

 .groupName("zhangsan")//组名

2.存在多个分组时,一个Docket对象代表一个组,创建多个对象就会有多个组:

//多个组
    @Bean
    public Docket docket1(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("A");//第一个组
    }
    @Bean
    public Docket docket2(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("B");//第二个组
    }
    @Bean
    public Docket docket3(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("C");//第三个组
    }

 

 

实体类配置

@ApiModel("用户实体类")//给实体类的文档注释
public class User {
 
    @ApiModelProperty("用户名")//给属性的文档注释
    public String username;
    @ApiModelProperty("密码")
    public String password;
}
@RestController
public class HelloController {
 
//    @RequestMapping("/hello")
//    public String hello(){
//        return "hello";
//    }
 
    @GetMapping("/hello")
    public String hello(){
        return "hello";
    }
 
    //只要我们的接口中,返回值存在实体类,它就会被扫描到Swagger中
    @PostMapping("/user")
    public User user(){
        return new User();
    }
 
    //Operation接口,不是放在类上,而是放在接口上
    @ApiOperation("hello控制类")
    @GetMapping("/hello2")
   public String hello2(@ApiParam("这是用户名") String username){//@ApiParam("用户名")为参数的注释
        return "hello"+username;
    }
}

 

 

 

 

总结:

  • 可以通过Swagger给一些比较难以理解的属性或者接口,增加注释信息

  • 接口文档实时更新

  • 可以在线测试

  • 注意点:在正式发布的时候,关闭swagger.出于安全考虑,节省内存。



 

标签:Swagger,return,Bean,swagger,Docket,public
From: https://www.cnblogs.com/xinyu-yudian/p/16905643.html

相关文章

  • Swagger的基本使用
    添加一个配置类SwaggerConfig.java@Configuration@EnableSwagger2//开启SwaggerpublicclassSwaggerConfig{@BeanpublicDocketwebApiConfig(){......
  • Swagger-学习
    Swagger说明:学自狂神视频,只做学习记录之用。目标:了解Swagger的作用和概念SpringBoot集成SwaggerSwagger简介Swagger是一个规范和完整的框架,用于生成、描述、调用......
  • beego下swagger自动更新接口信息和commentsRouter_controllers.go
    (1)在beego环境中,当更新了controllers目录下面的接口后,在swagger的web页面虽然可以看到更新后的接口,但无法正常运行,这是因为swagger的路由信息还没有更新(2)要更新swagger的路......
  • # SpringBoot 整合 Swagger
    SpringBoot整合Swagger是什么不介绍,这个东西很简单,主要看点底层源码即可,注意:这个东西很容易造成版本错乱的部分引入狂神说的代码段,因为我有些东西懒得写引入<sp......
  • swagger2 踩坑记录
    1.swagger2是用​​SpringfoxSwagger2​​导入的swagger2最新版本只到 2.9.2,后面2.10以上都是swagger3了 如果要使用swagger3 ,可以不用springfox了,用什么,你再找......
  • 【SpringBoot】整合Swagger
    Swagger简介Vue+SpringBoot后端时代:前端只用管理静态页面;html==>后端。模板引擎JSP=>后端是主力后端:后端控制层,服务层,数据访问层【后端团队】前端:前端控制层,视图......
  • swagger UI
    SwaggerUISwagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方......
  • spring boot Swagger2(version=2.7.0) 注解@ApiImplicitParam的属性dataType值为”自
    转载自:https://www.bbsmax.com/A/WpdKlbDqzV/注解:@ApiImplicitParams@ApiImplicitParam   name="需注解的API输入参数",value="接收参数的意义描述",paramType="参......
  • ASP.NET Core教程-Configuration(配置)-Swagger
    更新记录转载请注明出处:2022年11月8日发布。2022年11月5日从笔记迁移到博客。注册服务在服务容器中注册服务,使用AddSwaggerGen()方法。builder.Services.AddSw......
  • mall学习教程笔记--Mybatis generator和Swagger
    github学习项目--mall学习教程https://www.macrozheng.com/mall/catalog/mall_catalog.htmlMybatisgenerator配置文件介绍MyBatis的代码生成器,可以根据数据库生成mode......