• (六)SpringBoot整合Swagger2框架


    一:什么是Swagger

    Swagger是一款通过我们添加的注解来对方法进行说明,来自动生成项目的在线api接口文档的web服务。

    二:添加Swagger2依赖

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

      

    三:创建Swagger2配置文件

    在文件夹configurer中创建SwaggerConfigure

    package com.example.demo.core.configurer;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    /**
     * @author 
     * @Description:Swagger2 配置文件
     * @time 2018/4/20 22:42
     */
    @Configuration
    @EnableSwagger2
    public class SwaggerConfigurer {
    
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
                    .paths(PathSelectors.any())
                    .build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("mySpringBoot 使用Swagger2构建RESTful APIs")
                    .description("更多Spring Boot相关文章请关注:https://juejin.im/user/59e7fb9451882578e1406a51/posts")
                    .termsOfServiceUrl("https://juejin.im/user/59e7fb9451882578e1406a51/posts")
                    .contact(new Contact("Mr_初晨", "https://gitee.com/beany/mySpringBoot", null))
                    .version("1.0")
                    .build();
        }
    }
    

      

    四:修改Controller,添加API注解

    package com.example.demo.controller;
    
    @RestController
    @RequestMapping("userInfo")
    @Api(tags = {"用户操作接口"}, description = "userInfoControler")
    public class UserInfoController {
    
        @Resource
        private UserInfoService userInfoService;
    
        @PostMapping("/hello")
        public String hello() {
            return "hello SpringBoot";
        }
    
        @ApiOperation(value = "查询用户", notes = "根据用户ID查询用户")
        @ApiImplicitParams({
                @ApiImplicitParam(name = "id", value = "用户ID", required = true,
                        dataType = "Integer", paramType = "query")
        })
        @PostMapping("/selectById")
        public RetResult<UserInfo> selectById(@RequestParam Integer id) {
            UserInfo userInfo = userInfoService.selectById(id);
            return RetResponse.makeOKRsp(userInfo);
        }
    
        @PostMapping("/testException")
        public RetResult<UserInfo> testException(Integer id) {
            List a = null;
            a.size();
            UserInfo userInfo = userInfoService.selectById(id);
            return RetResponse.makeOKRsp(userInfo);
        }
    
    
    }
    

     

    六:解决问题

    继承WebMvcConfigurationSupport之后,静态文件映射会出现问题,需要重新指定静态资源

    WebConfigurer 中添加如下代码

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
        registry.addResourceHandler("/favicon.ico")
                .addResourceLocations("classpath:/META-INF/resources/favicon.ico");
        super.addResourceHandlers(registry);
    }
    

      

    访问地址: localhost:8080/swagger-ui.html

    七常用注解

    常用注解: 
    - @Api()用于类; 
    表示标识这个类是swagger的资源 
    - @ApiOperation()用于方法; 
    表示一个http请求的操作 
    - @ApiParam()用于方法,参数,字段说明; 
    表示对参数的添加元数据(说明或是否必填等) 
    - @ApiModel()用于类 
    表示对类进行说明,用于参数用实体类接收 
    - @ApiModelProperty()用于方法,字段 
    表示对model属性的说明或者数据操作更改 
    - @ApiIgnore()用于类,方法,方法参数 
    表示这个方法或者类被忽略 
    - @ApiImplicitParam() 用于方法 
    表示单独的请求参数 
    - @ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam

    具体使用举例说明: 
    @Api() 
    用于类;表示标识这个类是swagger的资源 
    tags–表示说明 
    value–也是说明,可以使用tags替代

  • 相关阅读:
    类型转换
    new Overload函数输出
    快捷键加入属性代码段
    xp 下 安装Ubuntu 11.04 双系统
    native2ascii 用法解析
    apusic jconsole jmx connecitons url
    oracle 分页
    几条最基本的 sqlplus命令
    windows下plsql 设置 里面timestamp显示的格式
    oracle 时间差 做查询条件
  • 原文地址:https://www.cnblogs.com/yui66/p/9615797.html
Copyright © 2020-2023  润新知