首页 > 其他分享 >Swagger

Swagger

时间:2023-05-13 15:48:24浏览次数:26  
标签:Swagger com 扫描 lian swagger Docket public

1.简介

号称世界上最流行的Api框架

RestFul Api文档在线自动生成工具

直接运行,可以在线测试API接口

支持多种语言(java,PHP..)

 

2.enable是否启动swagger,如果为false,swagger就不能再浏览器中访问,

测试代码:

@Configuration//配置类
@EnableSwagger2
public class SwaggerConfig {
    //配置了Swagger的Docket的bean实例
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(false)//enable是否启动swagger,如果为false,swagger就不能再浏览器中访问
                .select()
                //RequestHandlerSelectors,配置要扫描接口的方式
                //basePackage指定要扫描的包
                //any(),扫描全部包
                //none(),不扫描
                //withClassAnnoation:扫描类上的注解,参数是一个注解的反射对象
                //withMethodAnnoation:扫描方法上的注解
                .apis(RequestHandlerSelectors.basePackage("com.lian.swagger.controller"))
                .paths(PathSelectors.ant("/lian/**"))
                .build();
    }
    private ApiInfo apiInfo(){
        //作者信息
        Contact contact=new Contact("lian","https://mail.qq.com/","[email protected]");

        return new ApiInfo(
                "lian的api文档",
                "即使再小的帆",
                "v1.0",
                "https://mail.qq.com/",
                contact,
                "Apache 2.0",
                "https://zhuanlan.zhihu.com/p/259565080",
                new ArrayList()
        );
    }
}

 

访问swagger-ui.html就会出现下面页面:

 3.但是问题来了,如果我希望我的swagger在生产环境中使用,在发布环境不使用那怎么办?

1。准备好两个配置文件

application-dev.properties 为生产环境

server.port=8081

application-pro.properties 为发布环境

server.port=8082

测试代码:

@Configuration//配置类
@EnableSwagger2
public class SwaggerConfig {
    //配置了Swagger的Docket的bean实例
    @Bean
    public Docket docket(Environment environment){
        Profiles profiles=Profiles.of("dev","test");
        //通过判断是否处在自己设定的环境中
        boolean flag=environment.acceptsProfiles(profiles);
        System.out.println(flag);
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(flag)//enable是否启动swagger,如果为false,swagger就不能再浏览器中访问
                .select()
                //RequestHandlerSelectors,配置要扫描接口的方式
                //basePackage指定要扫描的包
                //any(),扫描全部包
                //none(),不扫描
                //withClassAnnoation:扫描类上的注解,参数是一个注解的反射对象
                //withMethodAnnoation:扫描方法上的注解
                .apis(RequestHandlerSelectors.basePackage("com.lian.swagger.controller"))
                .paths(PathSelectors.ant("/lian/**"))
                .build();
    }
View Code

运行接结果:

注意访问的是8082端口

 4.添加Api测试

在swagger配置类中可以配置多个Docket对象,并通过groupName用来记录代码的分工

@Configuration//配置类
@EnableSwagger2
public class SwaggerConfig {
    //配置了Swagger的Docket的bean实例
    @Bean
    public Docket docket(Environment environment){
        Profiles profiles=Profiles.of("dev","test");
        //通过判断是否处在自己设定的环境中
        boolean flag=environment.acceptsProfiles(profiles);
        System.out.println(flag);
        return new Docket(DocumentationType.SWAGGER_2).groupName("A")
                .apiInfo(apiInfo())
                .enable(flag)//enable是否启动swagger,如果为false,swagger就不能再浏览器中访问
                .select()
                //RequestHandlerSelectors,配置要扫描接口的方式
                //basePackage指定要扫描的包
                //any(),扫描全部包
                //none(),不扫描
                //withClassAnnoation:扫描类上的注解,参数是一个注解的反射对象
                //withMethodAnnoation:扫描方法上的注解
                .apis(RequestHandlerSelectors.basePackage("com.lian.swagger.controller"))
                .paths(PathSelectors.ant("/lian/**"))
                .build();
    }
    @Bean
    public  Docket docket2(){return new Docket(DocumentationType.SWAGGER_2).groupName("B");}

    @Bean
    public  Docket docket3(){return new Docket(DocumentationType.SWAGGER_2).groupName("C");}
    //配置swagger信息的apiinfo
    private ApiInfo apiInfo(){
        //作者信息
        Contact contact=new Contact("lian","https://mail.qq.com/","[email protected]");

        return new ApiInfo(
                "lian的api文档",
                "即使再小的帆",
                "v1.0",
                "https://mail.qq.com/",
                contact,
                "Apache 2.0",
                "https://zhuanlan.zhihu.com/p/259565080",
                new ArrayList()
        );
    }
}
View Code

controller测试类:

package com.lian.controller;

import com.lian.pojo.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
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.RestController;

@RestController

public class TestController {
    @RequestMapping("/t")
    public String mytest(){
        return "hello,swagger!";
    }

    //只要我们的接口中的返回值存在实体类,它就会被扫描到swagger中
    @PostMapping(value = "/user")
    public User user(){
        return new User();
    }
    @ApiOperation("Post测试类")

    @GetMapping (value = "/hello2")
    public String hello2(@ApiParam("用户名")User username){

        return "hello"+username;
    }

    @ApiOperation("Post测试类")

    @PostMapping(value = "/postt")
    public User postt(@ApiParam("用户名")User user){
        int i;
        return user;
    }
}
View Code

 

在前端页面可以清楚看到页面是否正常

 5.总结

对于swagger的使用:会更改页面swagger-ui.html的信息,会加注解,会看页面swagger-ui.html哪里错了即可

标签:Swagger,com,扫描,lian,swagger,Docket,public
From: https://www.cnblogs.com/MyBlogs-joyiyii/p/17397189.html

相关文章

  • swagger
    https://juejin.cn/post/6854573209560285198最近SpringFox3.0.0发布了,距离上一次大版本2.9.2足足有2年多时间了。可能看到这个名字,很多读者会有点陌生。但是,只要给大家看一下这两个依赖,你就知道了!<dependency><groupId>io.springfox</groupId><artifactId>sprin......
  • springboot集成springSwagger生成接口文档
    1.首先引入pom.xml依赖<!--SwaggerAPI文档--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version><exclusions><exclus......
  • swagger2.0
    <groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.6</version><relativePath/><dependency><groupId>io.springfox</groupId><artifa......
  • swagger3.0集成 (springboot2.6.7)
    springboot2.6.7+swagger3.0导入依赖<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency>s......
  • 使用Swagger Codegen生成TS相关代码
    官方介绍地址:https://github.com/swagger-api/swagger-codegen1.安装JDK【略】2.下载jar包wgethttps://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.41/swagger-codegen-cli-3.0.41.jar-Oswagger-codegen-cli.jar或Invoke-WebRequest-OutFil......
  • Net Core Web Api 配置Swagger
    一、创建NETCoreAPI项目NETCore版本:NETCore2.21.创建coreweb应用程序2.选择API3.下图为生成后的项目二、安装Swagger1.打开NuGet包管理器2.搜索Swashbuckle.AspNetCore安装在项目上3.点击我接受三、配置Swagger对于ConfigureServices和Configure的配置点击可参考1.ConfigureS......
  • swagger3 常用注解
    swagger2OpenAPI3注解位置@Api@Tag(name=“接口类描述”)Controller类上@ApiOperation@Operation(summary=“接口方法描述”)Controller方法上@ApiImplicitParams@ParametersController方法上@ApiImplicitParam@Parameter(description=“参数描......
  • 使用 Knife4j(Swagger)工具自动生成 API 接口文档
    现在的项目开发,绝大多数都已经采用前后端分离,前后端开发人员必须依靠接口文档进行协作。当前最流行的文档生成工具就是Swagger,它是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。但是本篇博客介绍的是Knife4j,它是集Swagger和OpenAPI为一体的......
  • 常见问题——关于.net WebApi使用Swagger报错:HTTP Error 403.14 - Forbidden
    问题:.netWebApi项目使用Swagger报错:HTTPError403.14-Forbidden解放方案:换一个端口即可推荐——删除解决方案下的.vs文件夹,重新生成即可参考:https://stackoverflow.com/questions/34970088/swagger-gives-me-http-error-403-14-forbidden/53863456......
  • springboot2.7.10集成swagger3.0 (springboot版本和swagger是有版本搭配的吗)
    springboot2.7.10集成swagger3.0https://blog.csdn.net/TuringZGJ/article/details/129832851  springboot版本和swagger是有版本搭配的吗 SpringbootSwagger各版本整理https://blog.csdn.net/m0_67401746/article/details/126506471 ......