栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Swagger

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Swagger

Swagger Swagger简介

前后端分离:Vue + SpringBoot

前后端分离式时代:

  • 后端:后端控制层,服务层,数据访问层
  • 前端:前端控制层,视图层

前后端如何交互!===》 API

前后端相对独立,松耦合,可以部署在不同的服务器

**产生问题:**前后端集成联掉,前端人员和后端人员无法做到“即使协商,尽早解决”。

**解决方案:**指定schema(计划提纲),实时更新最新API,降低集成的风险

Swagger

官网:https://swagger.io/

  • 号称世界上最流行的Api框架
  • RestFul Api文档在线自动生成工具----->APi文档与API定义同步更新
  • 直接运行,可以在线测试API接口
  • 支持多种语言
Spirngboot 集成 Swagger

1.新建yigeSpringBoot项目

2.导入相关依赖

    
        io.springfox
        springfox-swagger2
        2.7.0
    


    
    
        io.springfox
        springfox-swagger-ui
        2.7.0
    

3.编写Hello world 测试工程

4.配置Swagger

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

5.启动项目,测试运行,访问 http://localhost:8080/swagger-ui.html

配置Swagger
  1. 完善配置类
@Configuration
@EnableSwagger2
public class SwaggerConfig {

    //配置Swagger的Docket的bean实例
    @Bean
    public Docket docket(Environment environment){

        //设置要显示的Swagger环境
        Profiles profiles = Profiles.of("dev","test");
        //通过environment.acceptsProfiles判断是否处在自己设定的环境当中
        boolean b = environment.acceptsProfiles(profiles);
        return new Docket(documentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .groupName("li")
                .enable(b) //是否启用Swagger ,false,则swagger不能访问(默认开启)
                .select()
                //RequestHandlerSelectors 配置要扫描接口的方式
                //basePackage:指定要扫描的包
                //any():扫描全部
                //none() 不扫描
                //withClassAnnotation() 扫描类上的注解,参数是一个注解的反射对象
                //withMethodAnnotation() 扫描方法上的注解
                .apis(RequestHandlerSelectors.basePackage("com.swagger.controller"))
                //paths() 过略路径
                .paths(PathSelectors.ant("/kuang/**"))
                .build();
    }

    //可配置多个分组
    @Bean
    public Docket docket2(Environment environment){
        
        Profiles profiles = Profiles.of("dev","test");
        boolean b = environment.acceptsProfiles(profiles);
        return new Docket(documentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .groupName("王")
                .enable(b)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.swagger.controller"))
                //paths() 过略路径
                .paths(PathSelectors.ant("/kuang/**"))
                .build();
    }

    //配置Swagger信息 = apiInfo
    private ApiInfo apiInfo(){

        //作者信息
        Contact contact = new Contact("li", "", "123.qq.com");

        return new ApiInfo(
                "li API文档",
                "Api documentation",
                "v1.0",
                "urn:tos",
                contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }

}

配置实例类

controller

@RestController
public class HelloController {

    @GetMapping ("/hello")
    public String hello(){
        return "hello";
    }

    //只要我们的接口中,返回值中存在实体类,他就会被扫描到Swagger
    @PostMapping("/user")
    public User user(){
        return new User();
    }

}

实体类

@ApiModel 给实体类加注释

@ApiModelProperty给实体类属性加注释

@ApiModel("用户实体类")
public class User {

    @ApiModelProperty("用户名")
    private String username;
    @ApiModelProperty("密码")
    private String password;
}
总结
  1. 可以通过Swagger给一些比较难理解的属性或者接口,增加注释信息
  2. 接口文档实时更新
  3. 可以在线测试

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/583140.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号