美文网首页
Springboot+swagger2配置

Springboot+swagger2配置

作者: 花开半時偏妍 | 来源:发表于2020-06-28 15:30 被阅读0次

    1.引入依赖

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

    2.进行配置

    //swagger2的配置文件,在项目的启动类的同级文件建立
    @Configuration
    @EnableSwagger2
    //是否开启swagger,正式环境一般是需要关闭的(避免不必要的漏洞暴露!),可根据springboot的多环境配置进行设置
    @ConditionalOnProperty(name = "swagger.enable",  havingValue = "true")
    public class Swagger2 {
         // swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
         @Bean
         public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    // 详细信息定制
                    .apiInfo(apiInfo())
        //ApiSelectorBuilder扫描器
                    .select()
                    // 指定包路径,生成api文档的类
                     .apis(RequestHandlerSelectors.basePackage("com.fame.controller"))
                    // 扫描所有 .apis(RequestHandlerSelectors.any())
                    .paths(PathSelectors.any())
                    .build();
        }
         // 构建 api文档的详细信息函数,注意这里的注解引用的是哪个
         private ApiInfo apiInfo() {
              return new ApiInfoBuilder()
                       // 页面标题
                       .title("Spring Boot 测试使用 Swagger2 构建RESTful API")
                       // 创建人信息
                       .contact(new Contact("MrZhang",  "https://www.cnblogs.com/zs-notes/category/1258467.html",  "1729497919@qq.com"))
                       // 版本号
                       .version("1.0")
                       // 描述
                       .description("API 描述")
                       .build();
         }
    }
    

    3.进行测试

    @RestController
    public class UserController {
        @GetMapping("/get")
        public String get(){
            return "Hello Swagger2";
        }
    }
    

    4.输入SwaggerUI地址

    http://localhost:8080/swagger-ui.html

    标签说明

    @Api:用在请求的大类上,表示对类的说明

    tags="说明该类的作用,可以在UI界面上看到的注解"
    description="描述说明"
    value="该参数没什么意义,在UI界面上也看到,所以不需要配置"
    

    @ApiOperation:用在请求的方法上,说明方法的用途、作用

    value="说明方法的用途、作用"
    
    notes="方法的备注说明"
    

    @ApiImplicitParams:用在请求的方法上,表示一组参数说明

    @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
    
        name:参数名
    
        value:参数的汉字说明、解释
    
        required:参数是否必须传
    
        paramType:参数放在哪个地方
    
            · header --> 请求参数的获取:@RequestHeader
    
            · query --> 请求参数的获取:@RequestParam
    
            · path(用于restful接口)--> 请求参数的获取:@PathVariable
    
            · body(不常用)
    
            · form(不常用)   
    
        dataType:参数类型,默认String,其它值dataType="Integer"      
    
        defaultValue:参数的默认值
    

    示例:

    @ApiOperation("获取用户信息")
    @ApiImplicitParams({
    @ApiImplicitParam(paramType="header",name="username",dataType="String",required=true,value="用户的姓名",defaultValue="zhaojigang"),
    @ApiImplicitParam(paramType="query",name="password",dataType="String",required=true,value="用户的密码",defaultValue="wangna")
    })
    @ApiResponses({
    @ApiResponse(code=400,message="请求参数没填好"),
    @ApiResponse(code=404,message="请求路径没有或页面跳转路径不对")
    })
    @RequestMapping(value="/getUser",method=RequestMethod.GET)
    public User getUser(@RequestHeader("username") String username, @RequestParam("password") String password) {
    return userService.getUser(username,password);
    }
    

    @ApiResponses:用在请求的方法上,表示一组响应

    @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
    
        code:数字,例如400
    
        message:信息,例如"请求参数没填好"
    
        response:抛出异常的类
    

    @ApiParam:单个参数描述(方法中的参数只有加了@ApiParam注解才能生成中文的描述)

    @ApiModel:用于实体类上,表示一个返回响应数据的信息实体
    \color{#FF0000}{( 这种一般用在post创建的时候,使用RequestBody这样的场景,请求参数无法使用ApiImplicitParam注解进行描述的时候) }
    @ApiModelProperty:用在实体类的属性上,描述响应类的属性

    ApiParam和@ApiImplicitParam的功能是相同的,但是@ApiImplicitParam的适用范围更广

    相关文章

      网友评论

          本文标题:Springboot+swagger2配置

          本文链接:https://www.haomeiwen.com/subject/rqhwfktx.html