zoukankan      html  css  js  c++  java
  • 【转】 springBoot(12)---整合Swagger2

    【转】 springBoot(12)---整合Swagger2

    Spingboot整合Swagger2

            随着互联网技术的发展,一般开发都是前后端分离,那么前端和后端的唯一联系,变成了API接口;API文档变成了前后端开发人员联系的纽带,变得越来越重要,没有API

    文档工具之前,大家都是手写API文档的,在什么地方书写的都有,有在confluence上写的,有在对应的项目目录下readme.md上写的,每个公司都有每个公司的玩法,无所谓好

    坏。但都有一个很大的诟病就是,如果你的接口改动了,那你必须记得去改你的API文档,而Swagger并不需要。swagger就是一款让你更好的书写API文档的框架。

    一、项目搭建

       1、pom.xml

            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.9.2</version>
            </dependency>
    
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.9.2</version>
            </dependency>

       2、application.yml

    server:
      port: 8086
    
    #代表当前环境是dev环境
    spring:
      profiles:
        active: dev

       3、Swagger2DevConfig(配置类)

    注意添加@EnableSwagger2注解,这个注解也可以加在springboot启动类上

    @Configuration
    @EnableSwagger2
    public class Swagger2DevConfig {
    
        //默认pro环境
        @Profile({"default", "pro"})
        @Bean
        public Docket createWebApi() {
            return new Docket(DocumentationType.SWAGGER_2).enable(false).select().build();
        }
    
        //dev环境接口访问地址:http://localhost:8086/swagger-ui.html
        @Profile("dev")
        @Bean
        public Docket createWebApiDev() {
            return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfoDev()).select()
                    .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)).paths(PathSelectors.any()).build();
        }
    
        //测试环境接口访问地址: test.jincou.com/user/swagger-ui.html
        @Profile("test")
        @Bean
        public Docket createWebApiTest() {
            return new Docket(DocumentationType.SWAGGER_2).host("test.jincou.com/user")
                    .protocols(Sets.newHashSet("https")).apiInfo(apiInfoDev()).select()
                    .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)).paths(PathSelectors.any()).build();
        }
    
        private ApiInfo apiInfoDev() {
            return new ApiInfoBuilder().title("用户模块API").description(
                    "用户api接口文档
    " + "
    " + "测试环境:https://test.jincou.com/user
    ").contact(new Contact("张三", "", ""))
                    .version("1.0").build();
        }
    }

          4、PersonController

        这里提供了两个接口

    @Api(tags = "用户相关接口")
    @RestController
    @RequestMapping(value = "/web/api/person")
    public class PersonController {
    
    
        @ApiOperation(value = "用户详细信息", notes = "通过id获得用户详细信息")
        @ApiImplicitParams({
                @ApiImplicitParam(name = "id", value = "用户ID", required = true, paramType = "query", defaultValue = "0")})
        @RequestMapping(value="page",method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE )
        public Person  getById(@RequestParam(value="id",defaultValue = "0") Long id){
            return new Person(id,2,"小小","杭州");
        }
    
        //大咖分页列表
        @ApiOperation(value = "删除用户信息", notes = "通过ID删除用户信息")
        @ApiImplicitParams({
                @ApiImplicitParam(name = "id", value = "用户ID", required = true, paramType = "query", defaultValue = "0")})
        @RequestMapping(value="delete",method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE )
        public String  delete(@RequestParam(value="id",defaultValue = "0") Long id){
    
            return "删除成功";
        }
    }

          5、Person实体类

    @ApiModel(description = "用户详细信息")
    public class Person {
    
        @ApiModelProperty(value = "用户Id", position = 1)
        private Long id;
    
        @ApiModelProperty(value = "用户年龄", position = 2)
        private int age;
    
        @ApiModelProperty(value = "用户姓名", position = 3)
        private String name;
    
        @ApiModelProperty(value = "用户所在城市", position = 4)
        private String city;
    
        public Person(Long id,int age,String name,String city){
            this.id=id;
            this.age=age;
            this.city=city;
            this.name=name;
        }
    //提供get和set方法
    }

         6、本地启动测试

       访问:http://localhost:8086/swagger-ui.html。

     

    我只是偶尔安静下来,对过去的种种思忖一番。那些曾经的旧时光里即便有过天真愚钝,也不值得谴责。毕竟,往后的日子,还很长。不断鼓励自己,

    天一亮,又是崭新的起点,又是未知的征程(上校15)

      

  • 相关阅读:
    [HNOI2009]梦幻布丁(链表+启发式合并)
    [HNOI2004]宠物收养场(Treap)
    【模板】Treap
    Monkey King(左偏树)
    【模板】左偏树
    数列分段Section II(二分)
    [HAOI2006]受欢迎的牛(tarjan缩点)
    【模板】树链剖分
    精美产品策划类企业织梦模板
    简洁的支持展开关闭的tab标签代码
  • 原文地址:https://www.cnblogs.com/Javastudy-note/p/13818082.html
Copyright © 2011-2022 走看看