Springfox集成swagger实战篇

一   引入maven依赖

compile ‘io.springfox:springfox-swagger2:2.9.2‘compile ‘io.springfox:springfox-swagger-ui:2.9.2‘compile "io.springfox:springfox-bean-validators:2.9.2"

 编写配置文件

package com.wxbc.constant;

import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Import;import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;import springfox.documentation.builders.ApiInfoBuilder;import springfox.documentation.builders.ParameterBuilder;import springfox.documentation.builders.PathSelectors;import springfox.documentation.builders.RequestHandlerSelectors;import springfox.documentation.schema.ModelRef;import springfox.documentation.service.ApiInfo;import springfox.documentation.service.Parameter;import springfox.documentation.spi.DocumentationType;import springfox.documentation.spring.web.plugins.Docket;import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.ArrayList;import java.util.List;

@Configuration@EnableSwagger2@Import(BeanValidatorPluginsConfiguration.class)public class Swagger2 {    @Bean    public Docket createRestApi() {
         return new Docket(DocumentationType.SWAGGER_2)         .select()         .apis(RequestHandlerSelectors.any())         .paths(PathSelectors.any())         .build();  
    }

    private ApiInfo apiInfo() {        return new ApiInfoBuilder().title("test平台端").description("可以直接访问的接口")                .version("0.1")                .build();    }

}

三 启动项目访问http://localhost:9079/swagger-ui.html

效果图如下:

 四 Swagger2常用注解介绍

常用注解: 
- @Api()用于类; 
表示标识这个类是swagger的资源 , 一般作用于Controller上

@Api(tags = "(查询类api)")

- @ApiOperation()用于方法; 
表示一个http请求的操作 ,一般作用于接收http请示的方法上
- @ApiParam()用于方法,参数,字段说明; 
表示对参数的添加元数据(说明或是否必填等) 
- @ApiModel()用于类 
表示对类进行说明,用于参数用实体类接收 ,一般作用于@RequestBody的类上

- @ApiModelProperty()用于方法,字段 
表示对model属性的说明或者数据操作更改

- @ApiIgnore()用于类,方法,方法参数

表示这个方法或者类被忽略 
- @ApiImplicitParam() 用于方法 
表示单独的请求参数 
- @ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam

 

@ApiOperation(value = "test", notes = "test2",        response = Response.class)@PostMapping("/query")public Response queryTransferDetail(@Valid @RequestBody QueryDetailPara para) throws ParameterException {

    return Response.success();}

@ApiModel()用于类 ;表示对类进行说明,用于参数用实体类接收 
value–表示对象名 
description–描述 
都可省略 
@ApiModelProperty()用于方法,字段; 表示对model属性的说明或者数据操作更改 
value–字段说明 
name–重写属性名字 
dataType–重写属性类型 
required–是否必填 
example–举例说明 
hidden–是否对前端隐藏

@Data@ApiModelpublic class QueryDetailPara extends BaseInfo {

    @NotBlank(message = "project不能为空")    @ApiModelProperty(value = "项目来源",required = true,example = "rhine3")    @Size(min = 1,max = 65)    private String project;

    @Max(100)    @Min(10)    @ApiModelProperty(value = "用户年龄",allowableValues = "range[1,11]")    private Integer age;

    @Max(100)    @Min(10)    @ApiModelProperty(value = "用户年龄")    private Integer age1;

    @Max(100)    @Min(10)    @ApiModelProperty(value = "用户年龄",allowableValues = "10,100,1000")    private Integer age2;

}

JSR 303:Bean Validation  允许您注释Java类的字段以声明约束和验证规则。您可以使用以下规则注释单个字段: - 不能为空,最小值,最大值,正则表达式匹配等。

一点说明:

1. @Max @Min注解 只能作用于Integer类的整形约束

2. 如果要修释字符串的长度,使用@Size注解

3.如果有些数据项需要枚举值,可使用allowableValues,有三种写法,

i)  allowableValues="test1,test2,test3"

ii)  allowableValues="range[1,11]"

具体查看源码:

 /**
     * Limits the acceptable values for this parameter.
     * <p>
     * There are three ways to describe the allowable values:
     * <ol>
     * <li>To set a list of values, provide a comma-separated list.
     * For example: {@code first, second, third}.</li>
     * <li>To set a range of values, start the value with "range", and surrounding by square
     * brackets include the minimum and maximum values, or round brackets for exclusive minimum and maximum values.
     * For example: {@code range[1, 5]}, {@code range(1, 5)}, {@code range[1, 5)}.</li>
     * <li>To set a minimum/maximum value, use the same format for range but use "infinity"
     * or "-infinity" as the second value. For example, {@code range[1, infinity]} means the
     * minimum allowable value of this parameter is 1.</li>
     * </ol>
     */
    String allowableValues() default "";

4. 使用allowableValues属性会导致@Max @Min及@Size注解失效。

此文章纯属学习笔记,如有什么不足之处请在下方留言,我一会竭力改进

原文地址:https://www.cnblogs.com/xifenglou/p/12692211.html

时间: 2024-10-08 08:10:28

Springfox集成swagger实战篇的相关文章

MyEclipse+Nexus+Jenkins+Sonar+Tomcat+SVN持续集成环境实战篇

持续集成环境:maven+nexus+jenkins+sonar 很久没有弄过技术了,最近也是因为公司需求,几天内需要弄出一套持续集成环境,没办法,翻阅了各种资料,各种网上搜索配置,最后还是成功弄好了,感觉不容易啊,给大家分享下我配置的关键过程吧.过于简单的东西我就直接略过了.说的不对的地方还请各路大神不吝指教. 安装包准备: 1.    maven 2.    jdk7+tomcat7 3.    nexus 4.    Jenkins 5.    Sonar 一.安装Nexus window

Spring Data REST API集成Springfox、Swagger

原文: Documenting a Spring Data REST API with Springfox and Swagger 使用Spring Date REST,你可以迅速为Spring Date repositories的创建REST API,并提供CRUD和更多功能.然而,在严谨的API开发过成功,您还希望拥有自动生成的最新API文档. Code Example 本文附带了工作示例代码github Swagger提供了一个用于记录REST API的规范.通过使用Springfox,我

MP实战系列(二)之集成swagger

其实与spring+springmvc+mybatis集成swagger没什么区别,只是之前写的太不好了,所以这次决定详细写. 提到swagger不得不提rest,rest是一种架构风格,里面有对不同的资源有不同的请求标识.例如PUT,POST,GET,DELETE,OPTIONS,HEAD,PATCH等. 对于技术的初学,最好的话还是建议去官网,官网最详细也最权威,虽然不少博客对此有挺好的解说,但还是强烈建议去官网,不要求仔仔细细阅读,至少读个大概. 对于目前,有人要问我swagger能做什么

Springfox与swagger的整合使用

一.前言 让我们先理一下springfox与swagger的关系. swagger是一个流行的API开发框架,这个框架以"开放API声明"(OpenAPI Specification,OAS)为基础,对整个API的开发周期都提供了相应的解决方案,是一个非常庞大的项目(包括设计.编码和测试,几乎支持所有语言). OAS本身是一个API规范,它用于描述一整套API接口,包括一个接口是GET还是POST请求啊,有哪些参数哪些header啊,都会被包括在这个文件中.它在设计的时候通常是YAML

Spring Boot 集成Swagger

Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步.Swagger 让部署管理和使用功能强大的API从未如此简单. 更多关于Swagger的作用,相信大家百度一下能了解的更全面,本文以SpringBoot中集成Swagger为例做介绍说明. 一.修改pom.xml,添加maven依赖 <!-- Swagger

Springfox与swagger的整合使用(十七)

一.前言 让我们先理一下springfox与swagger的关系. swagger是一个流行的API开发框架,这个框架以"开放API声明"(OpenAPI Specification,OAS)为基础,对整个API的开发周期都提供了相应的解决方案,是一个非常庞大的项目(包括设计.编码和测试,几乎支持所有语言). OAS本身是一个API规范,它用于描述一整套API接口,包括一个接口是GET还是POST请求啊,有哪些参数哪些header啊,都会被包括在这个文件中.它在设计的时候通常是YAML

Java高并发秒杀系统API之SSM框架集成swagger与AdminLTE

初衷与整理描述 Java高并发秒杀系统API是来源于网上教程的一个Java项目,也是我接触Java的第一个项目.本来是一枚c#码农,公司计划部分业务转java,于是我利用业务时间自学Java才有了本文,本来接触之初听别人说,c#要转java很容易,我也信了,但是真正去学习的时候还是踩了无数个坑,好在朋友有几个做安卓的,向他们讨教了一些经验,但是他们做安卓的和web又是两个方向,于是继续一个人默默采坑避雷之旅,首先上手的是下面这个Java高并发秒杀系统API. 学习java的初衷一个是公司转行,二

SpringBoot 集成 Swagger

Swagger官网 什么是Swagger Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API Swagger 可以生成客户端SDK代码用于各种不同的平台上的实现 Swagger 文件可以在许多不同的平台上从代码注释中自动生成 Swagger 有一个强大的社区 依赖导入 <!-- Swagger --> <dependency> <groupId>io.springfox</groupId> <artifactId&

SpringBoot集成Swagger,Postman,newman,jenkins自动化测试.

环境:Spring Boot,Swagger,gradle,Postman,newman,jenkins SpringBoot环境搭建. Swagger简介 Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件. 一.SpringBoot集成Swagger 1.build.gradle增加swagger相关jar包,maven项目同理. 2.增加SwaggerConfig配置文件. 前两步完成,访问http://localhost:8080/demoService/swa