首页 > 其他分享 >swagger

swagger

时间:2024-09-22 23:14:00浏览次数:7  
标签:swagger return new Swagger Docket public

Swagger

  • 号称世界上最流行的Api框架;
  • RestFul Api文档在线自动生成工具==》Api文档与API定义同步更新
  • 直接运行,可以在线测试API接口;
  • 支持多种语言:java、php……

官网:API文档和团队设计工具 |斯瓦格 (swagger.io)

在项目使用Swagger需要 springbox;

  • swagger2
  • swagger3
  • ui

SpringBoot集成Swagger

  1. 新建一个SpringBoot-web项目

  2. 导入相关依赖

    <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>3.0.0</version>
    </dependency>
        
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>3.0.0</version>
    </dependency>
    
  3. 编写Hello工程

  4. 配置swagger==》config

    @Configuration
    @EnableSwagger2   //开启Swagger2
    public class SwaggerConfig{
        
    }
    
  5. 测试运行:http://localhost:8080/swagger-ui.html

配置Swagger

Swagger的bean实例

SwaggerConfig配置类:

@Configuration
@EnableSwagger2   //开启Swagger2
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()
            .apis(RequestHandlerSelectors.basePackage("com.xueqin.swagger.controller"))//.paths(PathSelectors.ant("/xueqin/**"))
            .build;
    }
    
    //配置Swagger信息=apiInfo
    private ApiInfo apiInfo(){
        //作者信息
        Contact contact = new Contact("雪琴","地址","电子邮寄")
        return new ApiInfo(
            "雪琴的Swagger文档",
            "描述文本",
            "版本号",
            "服务地址",
            contact,
            "Apache 2.0",
            "dizhi",
            new ArrayList()
        )
    }
}

我只希望我的Swagger在生产环境中使用,在发布的时候不使用?

  • 判断是不是生产环境 flag=flase
  • 注入enable()
    //配置了Swagger的Docket的bean实例
    @Bean
    public Docket docket(Environment environment){
        //设置要显示的Swagger环境
        Profiles profiles = Profiles.of("dev","test");
        //通过environment.acceptsProfiles判断是否处在自己设置的环境当中
        boolean flag = environment.acceptsProfiles(profiles);
        System.out.println(flag);
        return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo())
            .enable(false)//enable是否启动swagger,如果为False,则Swagger不能在浏览器中访问
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.xueqin.swagger.controller"))//.paths(PathSelectors.ant("/xueqin/**"))
            .build;
    }

配置API文档的分组

.groupName("雪琴")

如何配置多个分组;多个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");
    }

实体类配置:

//@Api(注释)
@ApiModel("用户实体类")
public class User{
    @ApiModelProperty("用户名")
    public String username;
    @ApiModelProperty("密码")
    public String password;
}

controller:

@RestController
public class HelloController{
    @GetMapping(value = "/hello")
    public String hello(){
        return "hello";
    }
    //只要我们的接口中,返回值中存在实体类,它就会扫描到Swagger中
    @PostMapping(value = "/user")
    public USer user(){
        return new User();
    }
    //Operation接口,不是放在类上的,是方法
    @ApiOperation("Hello2控制类")
    @GetMapping(value = "/hello2")
    public String hello2(@ApiParam("用户名") String username){
        return "hello"+username;
    }
    @ApiOperation("Postce测试类")
    @PostMapping(value = "/postt")
    public User postt(@ApiParam("用户名") User user){
        int i = 5/0;
        return user;
    }
}

总结

  1. 我们可以通过swagger给一些比较难理解的属性或者接口,增加注释信息
  2. 接口文档实时更新
  3. 可以在线测试

Swagger是个优秀的工具,几乎所以大公司都在用它

【注意点】在正式发布的时候,关闭Swagger!!!出于安全考虑。而且节省运行的内存;

标签:swagger,return,new,Swagger,Docket,public
From: https://www.cnblogs.com/xqstudy/p/18426076

相关文章

  • Sringboot整合swagger
    1、引入依赖​放入pom.xml文件中的下<!--swagger--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version></dependency><!--swaggerui-->......
  • 【Swagger】2.——不在生产环境暴露,可以修改默认地址
    不对外暴露接口一般来说,接口给内部人员使用和测试的,不对生产环境暴露。此时应该如何设置呢?可以在Swagger配置文件中添加注解: @Profile({"环境名称1","环境名称2"}或@Profile("环境名称") 这里,注解中不添加生产环境。此时,开发环境和测试环境都可查看。理论上,应该不可查看到......
  • 【Swagger】Swagger入门和一些常见的问题
    什么是Swaggerswagger(丝袜哥)是当下比较流行的实时接口文档生成工具。前后端分离后,前后端交流比较重要的东西,就是接口文档。离线文档,最大的弊端就是接口程序发生变动的时候,需要回过头来维护上面的内容,确实比较玛法。实时接口文档可以根据代码来自动生成相应的接口文档。根据代......
  • 【Java】【Swagger】——接口过滤
    在前后端分离时代,Swagger能够实时更新API,十分好用。那么如果根据实际业务需要,展示接口呢?前提已经成功使用Swagger。知道增加 @Bean注解增加分组。此时不同的分组就涉及到不同的过滤。如何过滤接口?增加注解@ApiIgnoreapis():指定包名paths:过滤url增加注解@ApiIgnor......
  • dotnet framework 4.7.2 webapi 配置的swagger添加登录验证
    项目是.netframework4.7.2加webapi写的接口,使用Swashbuckle包添加的swagger支持 App_Start\SwaggerConfig.cs中加c.CustomAsset("index",thisAssembly,"WebApi.Jwt.SwaggerExtensions.index.html",false);1usingSystem.Web.Http;2usingWebActivato......
  • Rust使用Actix-web和SeaORM开发WebAPI通过Swagger UI查看接口文档
    本文将介绍Rust语言使用Actix-web和SeaORM库,数据库使用PostgreSQL,开发增删改查项目,同时可以通过SwaggerUI查看接口文档和查看标准Rust文档开始项目首先创建新项目,名称为rusty_crab_apicargonewrusty_crab_apiCargo.toml[dependencies]sea-orm={version="1.0.0-rc.5......
  • swagger教程-狂神版
    学习目标:了解Swagger的概念及作用掌握在项目中集成Swagger自动生成API文档Swagger简介前后端分离前端->前端控制层、视图层后端->后端控制层、服务层、数据访问层前后端通过API进行交互前后端相对独立且松耦合产生的问题前后端集成,前端或者后端无法做......
  • Java成神之路-踩坑篇: SpringBoot2.7.0版本整合Swagger3.0.0。解决:项目启动报错与swa
    话不多说先上报错信息Causedby:java.lang.NullPointerException:null atspringfox.documentation.spring.web.WebMvcPatternsRequestConditionWrapper.getPatterns(WebMvcPatternsRequestConditionWrapper.java:56)~[springfox-spring-webmvc-3.0.0.jar:3.0.0] atspri......
  • .net core8 优化、使用Swagger(附当前源码)
    说明  该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发)。   该系统文章,我会尽量说的非常详细,做到不管新手、老手都能看懂。   说明:OverallAuth2.0是一个简单、易懂、功能强大的权限+可视化流程管理系统。有兴趣的朋友,请关注我吧(*^......
  • .net core8 使用Swagger(附当前源码)
    说明  该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发)。   该系统文章,我会尽量说的非常详细,做到不管新手、老手都能看懂。   说明:OverallAuth2.0是一个简单、易懂、功能强大的权限+可视化流程管理系统。有兴趣的朋友,请关注我吧(*^......