一、使用swagger2生成接口文档

  1. 依赖

    <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.7.0</version>
    </dependency>
    <!-- swagger的bootstrap的美化界面 -->
    <dependency> 
      <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.7.0</version>
    </dependency>
  2. 在springboot的启动类上加@EnableSwagger2注解
  3. 在controller的接口上加@ApiOperation(value = "用户查询服务")注解表明接口的作用。

swagger2中常用注解:

@Api():用在请求的类上,表示对类的说明,也代表了这个类是swagger2的资源

   参数:tags:说明该类的作用,参数是个数组,可以填多个。
      value="该参数没什么意义,在UI界面上不显示,所以不用配置"
      description = "用户基本信息操作"

@ApiOperation():用于方法,表示一个http请求访问该方法的操作

参数:value="方法的用途和作用"
   notes="方法的注意事项和备注"
   tags:说明该方法的作用,参数是个数组,可以填多个。
   格式:tags={"作用1","作用2"}
   (在这里建议不使用这个参数,会使界面看上去有点乱,前两个常用)

@ApiModel():用于响应实体类上,用于说明实体作用

参数:description="描述实体的作用"  

@ApiModelProperty:用在属性上,描述实体类的属性

参数:value="用户名"  描述参数的意义
   name="name" 参数的变量名
   required=true 参数是否必选

@ApiImplicitParams:用在请求的方法上,包含多@ApiImplicitParam

@ApiImplicitParam:用于方法,表示单独的请求参数

参数:name="参数ming" 
   value="参数说明"
   dataType="数据类型"
   paramType="query" 表示参数放在哪里
    · header 请求参数的获取:@RequestHeader
· query 请求参数的获取:@RequestParam
· path(用于restful接口) 请求参数的获取:@PathVariable
· body(不常用)
· form(不常用)
defaultValue="参数的默认值"
required="true" 表示参数是否必须传

@ApiParam():用于方法,参数,字段说明 表示对参数的要求和说明

参数:name="参数名称"
   value="参数的简要说明"
   defaultValue="参数默认值"
   required="true" 表示属性是否必填,默认为false

@ApiResponses:用于请求的方法上,根据响应码表示不同响应,一个@ApiResponses包含多个@ApiResponse

@ApiResponse:用在请求的方法上,表示不同的响应

参数:code="404"    表示响应码(int型),可自定义
   message="状态码对应的响应信息"

@ApiIgnore():用于类或者方法上,不被显示在页面上
@Profile({"dev", "test"}):用于配置类上,表示只对开发和测试环境有用

二、使用WireMock伪造REST服务

WireMock 是一个灵活的库用于 Web 服务测试,和其他测试工具不同的是,WireMock 创建一个实际的 HTTP服务器来运行你的 Web 服务以方便测试。

它支持 HTTP 响应存根、请求验证、代理/拦截、记录和回放, 并且可以在单元测试下使用或者部署到测试环境。

使用场景:

  • 测试移动应用依赖于第三方REST APIs
  • 创建快速原型的APIs
  • 注入否则难于模拟第三方服务中的错误
  • 任何单元测试的代码依赖于web服务的
  1. 官网: http://wiremock.org/

    下载可执行jar:http://wiremock.org/docs/running-standalone/

  2. java-jar启动jar包   java -jar wiremock-standalone-2.18.0.jar --port 3298
  3. 添加依赖
    <dependency>
    <groupId>com.github.tomakehurst</groupId>
    <artifactId>wiremock</artifactId>
    <version>1.53</version>
    <classifier>standalone</classifier>
    </dependency>
    <dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>6.8</version>
    </dependency>
  4. 在resources中建立文件夹建立txt文件,存放返回的json数据
  5. 添加设置
    public static void main(String[] args) throws IOException {
    WireMock.configureFor("127.0.0.1",3298);//设置路径和端口
    WireMock. removeAllMappings();//清空所有设置 mock("/test/01", "01");
    mock("/test/02", "02");
    } private static void mock(String url, String file) throws IOException {
    ClassPathResource resource = new ClassPathResource("response/" + file + ".txt");
    String content = StringUtils.join(FileUtils.readLines(resource.getFile(), "UTF-8").toArray(), "\n");//返回结果
    stubFor(get(urlPathEqualTo(url)).willReturn(aResponse().withBody(content).withStatus(200)));//get或post请求返回值
    }

前后端分离中,使用swagger2和WireMock提高开发速度的更多相关文章

  1. nodejs--JWT 在前后端分离中的应用与实践

    nodejs--JWT 在前后端分离中的应用与实践 http://www.cnblogs.com/lidongyue/p/5269695.html

  2. 前后端分离中的无痛刷新token机制

    今天我们来说一说前后端分离中的无痛刷新token机制 博主先来分享一波福利,最近挖到的宝藏,刚开始学Java的同学看 https://www.bilibili.com/video/BV1Rx41187 ...

  3. 前后端分离中,Gulp实现头尾等公共页面的复用

    前言 通常我们所做的一些页面,我们可以从设计图里面看出有一些地方是相同的.例如:头部,底部,侧边栏等等.如果前后端分离时,制作静态页面的同学,对于这些重复的部分只能够通过复制粘贴到新的页面来,如果页面 ...

  4. JWT 在前后端分离中的应用与实践

    关于前后端分离 前后端分离是一个很有趣的议题,它不仅仅是指前后端工程师之间的相互独立的合作分工方式,更是前后端之间开发模式与交互模式的模块化.解耦化.计算机世界的经验告诉我们,对于复杂的事物,模块化总 ...

  5. 前后端分离中,gulp实现头尾等公共页面的复用 前言

    前言 通常我们所做的一些页面,我们可以从设计图里面看出有一些地方是相同的.例如:头部,底部,侧边栏等等.如果前后端分离时,制作静态页面的同学,对于这些重复的部分只能够通过复制粘贴到新的页面来,如果页面 ...

  6. shiro vue 前后端分离中模拟登录遇到的坑

    系统采用jeeplus框架(ssm+redis+shiro+mongodb+redis),默认是了JSP未做前后端分离,由于业务需要已经多终端使用的需求(H5.小程序等),需要实现前后端分离.但是由于 ...

  7. Vue+SpringBoot前后端分离中的跨域问题

    在前后端分离开发中,需要前端调用后端api并进行内容显示,如果前后端开发都在一台主机上,则会由于浏览器的同源策略限制,出现跨域问题(协议.域名.端口号不同等),导致不能正常调用api接口,给开发带来不 ...

  8. Springboot前后端分离中,后端拦截器拦截后,前端没有对应的返回码可以判断

    项目登录流程如下 用户进入前端登录界面,输入账号密码等,输入完成之后前端发送请求到后端(拦截器不会拦截登录请求),后端验证账号密码等成功之后生成Token并存储到数据库,数据库中包含该Token过期时 ...

  9. web 部署专题(九):Nginx 前后端分离中csrf_token 认证的实现

    1. 思路 参考:https://stackoverflow.com/questions/20826201/simple-csrf-protection-using-nginx-alone?r=Sea ...

随机推荐

  1. [斯坦福大学2014机器学习教程笔记]第六章-代价函数(Cost function)

    在这节中主要讲的是如何更好地拟合逻辑回归模型的参数θ.具体来说,要定义用来拟合参数的优化目标或者叫代价函数,这便是监督学习问题中的逻辑回归模型的拟合问题. 我们有一个训练集,训练集中有m个训练样本:{ ...

  2. 重新开始记录java教程

    最近在工作上学到了很多的知识和经验,以后每天都来记录给博客园上面

  3. LoadRunner接口脚本编写过程中遇到的问题及分享

    工作中需要接口测试,报文编辑器一条条手工发费时费力,因此考虑利用web_submit_data函数POST方法进行报文编辑.在报文编辑中主要遇到了三个问题,其中一个问题耗时两天查到问题所在,在这里与大 ...

  4. 一起学Vue:UI框架(element-ui)

    目标 使用Vue+ElementUI构建一个非常简单CRUD应用程序,以便您更好地了解它的工作方式. 效果页面 比如我们要实现这样列表.新增.编辑三个页面: 列表页面 新增页面 编辑页面 安装elem ...

  5. 实现图像上像素点与实际位置的GPS对应

    作者有话说 这篇随笔是基于我自己完成的一个项目,这个项目虽然看起来较为简单,但是由于我本身不是学这个方向的,因此在做的过程中还是遇到了一些大大小小的问题.经过仔细研究并多次调试代码,终于把这个问题的原 ...

  6. Java学习的第九天

    1.双色球联系: 对象的创建和使用 2.静态没太明白. 3.明天学习java 的方法

  7. Day13 CSS样式

    1. css 选择器 1.1 css三种引入方法 <!DOCTYPE HTML> <html> <head> <meta charset="utf- ...

  8. Java内存区域(运行时数据区域)详解、JDK1.8与JDK1.7的区别

    2.1 概述 对Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每个对象的new操作去写配对的delete/free 代码,不容易出现内存泄露和内存溢出的问题.不过,仍然需要Java虚 ...

  9. Simulink中封装子系统

    学习目的: 使用simulink封装一个子系统,并将封装子系统放入到自定义的库中,可供建模时重复使用 功能:封装一个能够检测输入信号下降沿跳变的边沿检测模块,该模块可支持双击时修改内部参数.封装完成后 ...

  10. 水题挑战6: CF1444A DIvision

    A. Division time limit per test1 second memory limit per test512 megabytes inputstandard input outpu ...