精华内容
参与话题
问答
  • SpringBoot整合springFox

    2020-11-09 14:38:09
    SpringBoot整合springFox 1springFox介绍 springFox算是swagger优化。它可以跟据业务代码自动生成相关的api接口文档,尤其用于restful风格中的项目,开发人员几乎可以不用专门去维护rest api,这个框架可以自动为...

    SpringBoot整合springFox

    1 springFox 介绍

    springFox算是swagger优化。它可以跟据业务代码自动生成相关的api接口文档,尤其用于restful风格中的项目,开发人员几乎可以不用专门去维护rest api,这个框架可以自动为你的业务代码生成restfut风格的api,而且还提供相应的测试界面,自动显示json格式的响应。大大方便了后台开发人员与前端的沟通与联调成本。

    springfox本身只是利用自身的aop的特点,通过plug的方式把swagger集成了进来,它本身对业务api的生成,还是依靠swagger来实现

    主要的好处:

    1前后端分离开发

    2API文档非常明确

    3测试的时候不需要再使用URL输入浏览器的方式来访问Controller

    4传统的输入URL的测试方式对于post请求的传参比较麻烦

    5springfox基于swagger2,兼容老版本

    6可以减少开发人员的文档编写时间及统一管理

    7其他强大的功能

     

    2springboot 整合 springFox

    1首先创建一个 springboot工程

    2 首先在pom文件里 加入依赖

    <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.6.1</version>

           </dependency>

     

    加入之后 整个pom文件

    <!-- Inherit defaults from Spring Boot -->

    <parent>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-parent</artifactId>

    <version>2.1.5.RELEASE</version>

    </parent>

     

    <!-- Add typical dependencies for a web application -->

    <dependencies>

    <dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

     

    <dependency>

    <groupId>io.springfox</groupId>

    <artifactId>springfox-swagger2</artifactId>

    <version>2.9.2</version>

    </dependency>

    <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->

    <dependency>

    <groupId>io.springfox</groupId>

    <artifactId>springfox-swagger-ui</artifactId>

    <version>2.9.2</version>

    </dependency>

    </dependencies>

    注意 :加入依赖 之后 如果 报错 请进行maven clear  maven install 

     

    之后 我们自己写一个config类上面加上两个注解@EnableSwagger2

    @Configuration 如下图

     

    最后 我们自己写一个 controller

    @Api(tags="测试类")

    @RestController

    public class DemoController {

     

     

     

    @ApiOperation("测试方法")

    @GetMapping("hello")

    public String hello() {

    return "success";

    }

     

    }

    3 访问页面

     

     

    我们可以看到 在我们 加入 springFox 依赖之后,我们项目的依赖管理里面出现了springfox-swagger-ui-2.6.1.jar,我们 点进去,在里面的 resource中 有一个html文件

    这就是 我们springfox 与swagger整合的进入页面

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

     

    我们发现 发圈的地方和我们 这两个注解写的内容一样

    @Api(tags="测试类") 用来注释类的错用

    @ApiOperation("测试方法") 用来注释 方法的作用

     

     

    接下来 我们 在demoController的方法中 加入参数和注解点击try it out

     

    @Api(tags="测试类")

    @RestController

    public class DemoController {

     

     

     

    @ApiImplicitParams({

    @ApiImplicitParam(name="username",value="用户名"),

    @ApiImplicitParam(name="password",value="密码")

    })

    @ApiOperation("测试方法")

    @GetMapping("hello")

    public String hello(String username,Stringpassword) {

    return "username="+username+"\tpassword="+password;

    }

     

     

    }

     

     

     

     

    我们 会发现参数的username 和password 通过@ApiImplicitParams 注解 也给加上了注释 接下来 我们 点击try it out 看下图 点击输入参数后 点击Execute

     

    在 @ApiImplicitParam(name="username",value="用户名"),后面还可以上上其他注解如下图

    可以自己点进去 具体查看

     

    接下来 我们 创建一个 user类 并且 在上面 加上注解

     

    @ApiModel

    public class User {

    @ApiModelProperty("用户名")

    private String username;

    @ApiModelProperty("密码")

    private String password;

    public String getUsername() {

    return username;

    }

    public void setUsername(String username) {

    this.username = username;

    }

    public String getPassword() {

    return password;

    }

    public void setPassword(String password) {

    this.password = password;

    }

     

    }

     

    我们 可以看到效果如下图

    会出现 一个Models 我们点进去

    我们 会发现 在bean类的属性家的注释 也显示了 ,方便  前后台对接,好了今天 我们先说到这里

    展开全文
  • SpringFox 学习

    千次阅读 2018-05-30 12:57:58
    Springfox与swagger的整合使用 前言 Swagger Swagger 是一个流行的API开发框架,这个框架以“开放API声明”(OpenAPI Specification,OAS)为基础,对整个API的开发周期都提供了相应的解决方案,是一个非常庞大的...

    官网源代码

    参考
    Springfox与swagger的整合使用

    前言

    Swagger

    Swagger 是一个流行的API开发框架,这个框架以“开放API声明”(OpenAPI Specification,OAS)为基础,对整个API的开发周期都提供了相应的解决方案,是一个非常庞大的项目(包括设计、编码和测试,几乎支持所有语言)。
    OAS本身是一个API规范,它用于描述一整套API接口,包括一个接口是GET还是POST请求啊,有哪些参数哪些header啊,都会被包括在这个文件中。它在设计的时候通常是YAML格式,这种格式书写起来比较方便,而在网络中传输时又会以json形式居多,因为json的通用性比较强。
    

    swagger-springmvc 发展出 SpringFox

    由于Spring的流行,Marty Pitt编写了一个基于Spring的组件swagger-springmvc,用于将swagger集成到springmvc中来。而springfox则是从这个组件发展而来,同时springfox也是一个新的项目。
    pringfox-swagger2依然是依赖OSA规范文档,也就是一个描述API的json文件,而这个组件的功能就是帮助我们自动生成这个json文件,我们会用到的另外一个组件springfox-swagger-ui就是将这个json文件解析出来,用一种更友好的方式呈现出来。
    

    使用

    Spring Boot 和 Swagger UI 集成
    Spring Boot 集成springfox后,默认就带了swagger-ui.html了,不需要此操作。如果想对界面进行定制,则需要先从 github swagger-ui 上下载Swagger-UI, 把该项目dist目录下的内容拷贝到项目的resources的目录public下,然后再修改(具体百度)。

    注解

    参考
    swagger注解 详细说明

    @Api

    用在类上,说明该类的作用

    @Api(value = "UserController", description = "用户相关api")

    @ApiOperation

    用在方法上,说明方法的作用

    @ApiOperation(value = "查找用户", notes = "查找用户", httpMethod = "GET", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

    @ApiImplicitParams

    用在方法上包含一组参数说明

    @ApiImplicitParam

    用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
    paramType:参数放在哪个地方

    header–>请求参数的获取:@RequestHeader
    query–>请求参数的获取:@RequestParam
    path(用于restful接口)–>请求参数的获取:@PathVariable
    body(不常用)
    form(不常用)
    

    name:参数名
    dataType:参数类型
    required:参数是否必须传
    value:参数的意思
    defaultValue:参数的默认值

    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "唯一id", required = true, dataType = "Long", paramType = "path"),
    })

    @ApiResponses

    用于表示一组响应

    @ApiResponse

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

    @ApiResponses(value = {
            @ApiResponse(code = 400, message = "No Name Provided")  
        })

    @ApiModel

    Swagger-core builds the model definitions based on the references to them throughout the API introspection.
    The @ApiModel allows you to manipulate the meta data of a model from a simple description or name change to a definition of polymorphism.
    描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)

    @ApiModel(value = "用户实体类")

    @ApiModelProperty

    描述一个model的属性

    @ApiModelProperty(value = "登录用户")
    @ApiIgnore //使用这个注解忽略这个接口
    展开全文
  • Springfox Java库套件主要是为了能够让使用Spring系列项目编写的JSON APIs自动生成机器和人类可读的规范。Springfox的工作原理是在运行时检查一次应用程序,根据Spring配置、类结构和各种编译时java注解推断API语义...

    1. 介绍

    Springfox Java库套件主要是为了能够让使用Spring系列项目编写的JSON APIs自动生成机器和人类可读的规范。Springfox的工作原理是在运行时检查一次应用程序,根据Spring配置、类结构和各种编译时java注解推断API语义。

    1.1. 历史

    Springfox是从马蒂·皮特最初创建的一个项目演变而来的,并被命名为swagger-springmvc。很多荣誉都归功于马蒂。

    1.2. 目标

    • 支持更多针对JSON API规范和文档的不断发展的标准,例如:swaggerRamljsonapi
    • 提供更多Spring webmvc外的Spring技术的支持
    • 从哲学上讲,我们不鼓励在运行时使用对服务描述不重要的(swagger-core)注解。例如,Jackson注解应该总是胜过@ApiModelProperty,或者具有比@ApiModelProperty更大的权重,又像是,@NotNull或指定@RequestParam#Required应该始终取胜。在无法推断服务/模式特征的情况下,注解仅用于补充文档或覆盖/调整生成的规范。

    1.3. 它不是什么

    它不是由Spring框架贡献者认可或批准的

    1.4. 开发环境

    • 文件(File) >> 打开(Open) >> build.gradle

    • 确保选中“使用默认Gradle包装器”选项。

    • 首次构建

    • ./gradlew cleanIdea idea
      
    • 要发布到本地maven存储库,请执行以下操作

    • ./gradlew clean build publishToMavenLocal -i
      

    此版本针对将软件发布为binray/Sonatype进行了优化。为了让Gradle确定版本,Gradle插件依赖于本地文件夹作为克隆的git存储库。下载源代码存档和构建将不起作用!

    1.4.1. 预提交构建

    • 代码质量(代码覆盖率、检查样式)

    • ./gradlew check
      

    1.4.2. 创建参考文档

    构建所有当前文档(构建手写文档和javadoc),请执行以下操作:

    ./gradlew allDocs
    

    档在build/all-docs文件夹中生成。发布当前文档的步骤(快照)

    ./gradlew publishDocs
    

    1.4.3. 更新契约测试

    在开发新契约测试时,为了便于用新契约更新现有测试,请取消对swagger-tract-test/build.gradle中以下行的注解。通常,当我们为已经修复的bug或添加的功能添加新的约定测试时,会发生这种情况,我们在BugsControllerFeatureDemonstrationService中创建一个端点来演示新的修复或行为。

    // NOTE: Uncomment to bulk update contracts
    //test {
    //  systemProperty("contract.tests.root", "$projectDir/src/test/resources")
    //  systemProperty("contract.tests.update", true)
    //}
    

    1.4.4. 持续集成环境

    Circle CI

    1.5. 发布

    要发布Springfox的非快照版本,请执行以下操作:

    • 执行Release命令:运行Release需要以下环境变量:
    • GITHUB_TOKEN
    • BINTRAY_USER_NAME
    • BINTRAY_PASSWORD
    • SONATYPE_USER_NAME
    • SONATYPE_PASSWORD

    建议将autoenv与Repo根目录下的.env文件一起使用。

        ./gradlew release -PreleaseType=<MAJOR|MINOR|PATCH> -i
        ./gradlew publishDocs
    

    发布步骤如下:

    • 检查git工作区是否干净
    • 检查本地git分支是否为主
    • 检查本地git分支是否与Origin相同
    • Gradle测试
    • Gradle检查
    • 将所有工件上传(发布)到Bintra
    • version.properties中升级项目版本
    • Git tag发布
    • Git推送

    1.5.1. 快照

    通常由CI服务器完成

    ./gradlew publishSnapshot
    

    1.5.2. 覆盖部署

    需要绕过标准发布流并直接上传到binray,请使用以下任务 - 在version.properties中手动设置版本

    ./gradlew clean build bintrayUpload -PreleaseType=<MAJOR|MINOR|PATCH>
     --stacktrace
    

    1.5.3. 发布文档

    需要更新现有版本的文档,请传递updateMode开关

    ./gradlew releaseDocs
    

    1.5.4. 贡献

    获取指导原则请参阅维基

    1.6 支持

    如果发现问题或错误,请通过Springfox Github项目提交

    2.快速入门

    2.1. 依赖

    Springfox库托管在bintray和JCenter上。以下是访问链接:

    • Release:
      • https://jcenter.bintray.com/io/springfox/
      • http://jcenter.bintray.com/io/springfox/
    • Snapshot
      • http://oss.jfrog.org/simple/oss-snapshot-local/io/springfox/
      • http://oss.jfrog.org/oss-snapshot-local/io/springfox/

    Springfox有多个模块,依赖关系将根据所需的API规范标准而有所不同。下面概述了如何引入springfox-swagger2模块,该模块用于生成Swagger2.0API文档。

    2.1.1. Gradle

    Release
    repositories {
      jcenter()
    }
    
    dependencies {
        compile "io.springfox:springfox-swagger2:2.9.2"
    }
    
    Snapshot
    repositories {
       maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local/' }
    }
    
    dependencies {
        compile "io.springfox:springfox-swagger2:2.9.2-SNAPSHOT"
    }
    

    2.1.2. Maven

    Release
    <repositories>
        <repository>
          <id>jcenter-snapshots</id>
          <name>jcenter</name>
          <url>https://jcenter.bintray.com/</url>
        </repository>
    </repositories>
    
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>
    
    Snapshot
    <repositories>
        <repository>
          <id>jcenter-snapshots</id>
          <name>jcenter</name>
          <url>http://oss.jfrog.org/artifactory/oss-snapshot-local/</url>
        </repository>
    </repositories>
    
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2-SNAPSHOT</version>
    </dependency>
    

    3. 快速入门指南

    查看剩余全部

    展开全文
  • 使用springfox整合SpringMVC和Swagger

    万次阅读 2016-09-29 16:57:36
    通过 springfox-swagger 将 Swagger 与 Spring-MVC 整合, 可从代码中的注解获取信息, 并生成相应的文档. 效果如下所示. 目前 Swagger 的 api 版本规范已经更新到 2.0 版本, 中文网络上基本上都是 1.0 的 api 版本...

    Swagger 是一系列对 RESTful 接口进行规范描述和页面展示的工具. 通过 springfox-swagger 将 Swagger 与 Spring-MVC 整合, 可从代码中的注解获取信息, 并生成相应的文档. 效果如下所示.

    这里写图片描述
    目前 Swagger 的 api 版本规范已经更新到 2.0 版本, 中文网络上基本上都是 1.0 的 api 版本规范的教程. 捣鼓了一天终于搞定了, 这两者区别还是有的.

    注: 本文的代码见 https://github.com/Frank-Hust/SpringAndStagger, 直接 gitclone 下来或者下载在 IDEA 中就能运行了.

    先添加依赖

     <!--springfox-swagger需要的最小依赖 start-->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.5.0</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.5.0</version>
            </dependency>
    
            <!--jackson用于将springfox返回的文档对象转换成JSON字符串-->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${version.jackson}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${version.jackson}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${version.jackson}</version>
            </dependency>
    
            <!--petStore是官方提供的一个代码参考, 可用于后期写文档时进行参考, 可不加-->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-petstore</artifactId>
                <version>2.5.0</version>
            </dependency>
    <!--最小依赖 end-->

    springfox-swagger2 可以将代码中的注解转换为符合 Swagger 的 API 规范的 swagger.json 文件, springfox-swagger-ui 提供了将 swagger.json 转换为 html 页面的服务.

    最精简的 springfox 配置

    Docket 对象为 spring-fox 提供了配置信息, ApiInfo 为生成的文档提供了元数据信息. 两者都使用这里我们仅仅使用最小配置, 两者均为默认配置. @EnableSwagger2 表示启用 Swagger.

    @Configuration
    @EnableSwagger2
    public class MySwaggerConfig {
    }

    然后再在 spring-component.xml 配置文件中将这个类注册成 bean, 用于启用配置

    <bean class="com.swagger.doc.MySwaggerConfig" />
    

    这样就开启了 springfox 和 swagger.

    springfox 的注解

    写一个简单的 Controller

    @Api(value = "User控制器")
    @Controller
    @RequestMapping("/user")
    public class UserController {
        @ApiOperation(value = "根据用户id查询用户信息", httpMethod = "GET", produces = "application/json")
        @ApiResponse(code = 200, message = "success", response = Result.class)
        @ResponseBody
        @RequestMapping(value = "queryUserById", method = RequestMethod.GET, produces = "application/json")
        public Result queryUserById(@ApiParam(name = "userId", required = true, value = "用户Id") @RequestParam("userId") int userId, HttpServletRequest request) {
            User user = new User(userId, "haoyifen", 24);
            Result result = new Result();
            result.setCode(0);
            result.setData(user);
            result.setMessage("success");
            return result;
        }
    }

    常用的几个用于生成文档的注解如下:
    - @Api 表示该类是一个 Swagger 的 Resource, 是对 Controller 进行注解的
    - @ApiOperation 表示对应一个 RESTful 接口, 对方法进行注解
    - @ApiResponse 表示对不同 HTTP 状态码的意义进行描述
    - @ApiParam 表示对传入参数进行注解

    结果验证:

    最后工程结构如下:

    这里写图片描述

    访问 http://localhost:8080/swagger-ui.html 就可以看到API文档, 并且能够进行在线的操作.

    这里写图片描述

    访问 http://localhost:8080/v2/api-docs 可以获得生成上述文档的Swagger JSON定义.
    这里写图片描述

    注: 本文的代码见https://github.com/Frank-Hust/SpringAndStagger, 直接gitclone下来或者下载在IDEA中就能运行了.

    相关资源:
    springfox官方文档: https://springfox.github.io/springfox/docs/snapshot/#introduction

    展开全文
  • 使用springfox+swagger2书写API文档

    万次阅读 2017-01-05 10:37:31
    主要介绍springfox自动生成API文档的配置与使用并结合swagger2展示书写的API,着重介绍springMVC中如何使用配置、使用springfox
  • SpringFox

    千次阅读 2019-03-27 15:12:14
    - 官方描述: 它是用Spring构建...- SpringFox是基于Spring框架的, 一个Java语言自动的一个OAS 文档生成工具. 正常是通过Swagger Editor编辑器, 编辑OAS的内容,给出design, 生成Swagger UI一个可视化的文档.,自动化...
  • Swagger/Springfox 入门简介 一、 Swagger 简介 1 前言 接口文档对于前后端开发人员都十分重要。尤其近几年流行前后端分离后接口文档又变成重中之重。接口文档固然重要,但是由于项目周期等原因后端人员经常出现...
  • [原创] SpringFox 3.0.0(包含springfox-swagger2-3.0.0)的发布与系统集成一. SpringFox 3.0.0 发布A. 此版本的亮点B. 兼容性说明C. 此版本已修补的漏洞二. 系统如何集成?A. swagger2-3.0 maven依赖加入,非常方便...
  • Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API...
  • 最近也是闲来无事,加上对swagger-bootstrap-ui也已经发布了将近26个稳定版本了,想到很多以后更有趣的功能,从Java底层扩展插件的方式开发出让国人拥有更棒的文档体验,所以决定研究一下springfox的源码,看能否对自己...
  • swagger简介  swagger确实是个好东西,可以跟据业务代码自动生成相关的api接口文档,尤其用于restful风格中的项目,开发人员几乎可以不用专门去维护rest api,这个框架可以自动为你的业务代码...springfox-swagger
  • springfox-swagger

    2018-08-23 16:24:29
    资源包含两个文件,一个是swagger2相关jar包,一个是swagger2项目demo. 可以查看博客:https://blog.csdn.net/qq_25814003/article/details/81982882
  • Springfox

    2016-08-03 20:01:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • 也许,你事先需要了解Swagger和Springfox的关系,然后我默认大家都在使用SpringBoot,并且对Java和Spring有一定的开发基础。 万物皆麻烦,直接上代码 1.pom文件 &amp;amp;lt;?xml version=&amp;quot;1.0&...
  • 使用springfox整合SpringMVC和Swagger

    千次阅读 2017-08-31 08:55:05
    通过 springfox-swagger 将 Swagger 与 spring-MVC 整合, 可从代码中的注解获取信息, 并生成相应的文档. 效果如下所示. 首先添加依赖 io.springfox springfox-swagger2 2.5.0 io.s
  • springfox整合SpringMVC

    千次阅读 2017-05-07 14:16:04
    springfox整合SpringMVC
  • 1. Introduction ...The Springfox suite of java libraries are all about automating the generation of machine and human readable specifications for JSON APIs written using the spring family of pro...
  • Spring Boot 整合 springfox-swagger 3.0.0

    千次阅读 2020-09-04 17:27:51
    springfox-swagger使用 swagger官网:swagger.io springfox官网:springfox springfox Github仓库:springfox / springfox springfox-demos Github仓库:springfox / springfox-demos springfox Maven仓库:Home » ...
  • 本文给出一个整合Maven+SpringMVC+SpringFOX+Swagger的示例,并且一步步给出完成步骤。 目标 在做项目的时候,有时候需要提供其它平台(如业务平台)相关的HTTP接口,业务平台则通过开放的HTTP接口获取相关的...
  • 发现一位博主写的特别棒 强烈推荐参考他的:大牛的网址由于Spring Boot能够快速开发、便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API。而我们构建RESTful API的目的通常都是由于多终端的...

空空如也

1 2 3 4 5 ... 20
收藏数 13,490
精华内容 5,396
关键字:

Springfox