1、去官网下载并启动:

2、引入Pom依赖(主要是com.github.tomakehurst:wiremock):

    <dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>25.1-jre</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.5</version>
</dependency>

3、编写客户端设置请求与响应(大量静态引用,可以添加到Eclipse的偏好设置中,然后在代码中静态引用能够简化代码,(Preferences中直接搜索faj即可)菜单Preferences->java->Edit->Content Assist->Favorites->New Type):

package wiremock;

import com.github.tomakehurst.wiremock.client.WireMock;

public class WireMockClient {

	public static void main(String[] args) {
// TODO Auto-generated method stub
WireMock.configureFor(8090); //很多重载方法,本地启动的,只需要指定端口即可
WireMock.removeAllMappings(); //清除以前的配置并重新配置
WireMock.stubFor(
WireMock.get(WireMock.urlPathEqualTo("/order/1")).
willReturn(WireMock.aResponse().
withBody("{\"id\":1,\"name\":\"cqu2010\"}").withStatus(200))); //伪造测试桩
} }

参数urlPathEqualTo和urlPathMatching表示URL严格匹配或正则匹配,withBody里面是json,后面可继续withStatus(状态码,200,400等整数),withHeaders等等,还有诸如statusMessage等,静态引用以后get要选wiremock的不要选spring的。

运行main方法后,服务器控制台输出:

Closest match:
{
"urlPath":"/order/1",
"method":"GET"
}

在main方法里写json不方便,可在resources下建txt文件并用apache的commons-io读取:

如在resources/file创建order.txt文件,内容:

{
"id": 1,
"type": "A"
}

代码:

package com.example.security.wiremock;

/**
* 静态引用
* FileUtils由commons-io:commons-io:2.6提供,StringUtils由commons-lang:commons-lang:2.5提供
*/ import static com.github.tomakehurst.wiremock.client.WireMock.*;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.core.io.ClassPathResource; import java.io.IOException; public class WireMockClient {
public static void main(String[] args) throws IOException {
configureFor(8090);
removeAllMappings();
mock("/order/1", "order"); //这样可以在resources/file目录下建立多个txt文件,在这里配置多条这样的语句即可
} public static void mock(String url, String fileName) throws IOException {
ClassPathResource resource = new ClassPathResource("/file/" + fileName + ".txt");
// String content = FileUtils.readFileToString(resource.getFile()); //建议废弃
String content = StringUtils.join(FileUtils.readLines(resource.getFile(), "UTF-8").toArray(), "\n");
stubFor(get(urlPathEqualTo(url)).willReturn(aResponse().withBody(content).withStatus(200)));
}
}

其它高级用法诸如定义请求头,路径,请求参数,记录行为,记录请求过程等,参考官方文档。

4、测试:

WireMock提供Restful接口数据的更多相关文章

  1. Spring Boot提供RESTful接口时的错误处理实践

    使用Spring Boot开发微服务的过程中,我们会使用别人提供的接口,也会设计接口给别人使用,这时候微服务应用之间的协作就需要有一定的规范. 基于rpc协议,我们一般有两种思路:(1)提供服务的应用 ...

  2. wiremock 模拟服务接口提供前端使用

    前后端分离同步开发时,如果前端需要等后端把接口都开发完了再去动工的话,项目周期会拉长. 以前开发时,一般前期是先把接口文档写的差不多了,要么是让前端自己构造模拟数据,要么是后端在开个控制器专门提供模拟 ...

  3. Spring Boot Hello World (restful接口)例子

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  4. Swift是一个提供RESTful HTTP接口的对象存储系统

    Swift是一个提供RESTful HTTP接口的对象存储系统,最初起源于Rackspace的Cloud Files,目的是为了提供一个和AWS S3竞争的服务. Swift于2010年开源,是Ope ...

  5. Java 导入数据到Excel并提供文件下载接口

    作者:Howie_Y链接:https://juejin.im/post/5ab4799451882521d6577fe4 最近的项目中遇到了一个将数据库的信息导入到一个 Excel 文件的需求,而且还 ...

  6. post 中文数据到elasticsearch restful接口报json_parse_exception 问题

    我们的客户端程序直接调用es 的restful接口, 通过post json数据去查询, 但post数据有中文的时候,有些中文会报异常,有些中文不会 {"error":{" ...

  7. Swift是一个提供RESTful HTTP接口的对象存储系统,目的是为了提供一个和AWS S3竞争的服务

    Swift是一个提供RESTful HTTP接口的对象存储系统,最初起源于Rackspace的Cloud Files,目的是为了提供一个和AWS S3竞争的服务. Swift于2010年开源,是Ope ...

  8. 亿级用户下的新浪微博平台架构 前端机(提供 API 接口服务),队列机(处理上行业务逻辑,主要是数据写入),存储(mc、mysql、mcq、redis 、HBase等)

    https://mp.weixin.qq.com/s/f319mm6QsetwxntvSXpKxg 亿级用户下的新浪微博平台架构 炼数成金前沿推荐 2014-12-04 序言 新浪微博在2014年3月 ...

  9. SpringBoot18 Swagger、API接口文档生成、WireMock、模拟后台数据

    1 Swagger 1.1 简述 前后端分离的项目需要前后端开发人员协同工作,后台开发人员需要给到前端开发者一套API文档:利用Swagger可以简单高效的帮助后台开发者生成RestfulAPI开发文 ...

随机推荐

  1. Python中的装饰器,迭代器,生成器

    1. 装饰器 装饰器他人的器具,本身可以是任意可调用对象,被装饰者也可以是任意可调用对象. 强调装饰器的原则:1 不修改被装饰对象的源代码 2 不修改被装饰对象的调用方式 装饰器的目标:在遵循1和2的 ...

  2. VB - FSO的常见对象和方法

    1. set fs=wscript.createobject(“scripting.filesystemobject”) 这样就建立了fso的模型.如果要释放的话也很简单, set fs=nothin ...

  3. hashlib加密模块,加密方式:(MD5,sha级别)

    三,hashlib模块 算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一 ...

  4. 浅析Mysql事务传播行为

    传播行为 1.PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置. 2.PROPAGATION_SUPPORTS:支持当 ...

  5. 浏览器中的JavaScript事件循环机制

    浏览器的事件循环机制是HTML中定义的规范. JavaScript有一个主线程和调用栈,所有的任务都会被放到调用栈等待主线程执行. JS调用栈 是一种先进后出的数据结构.当函数被调用时,会被添加到栈中 ...

  6. CentOS7.6系统安装详解(含真机装系统的采坑之旅)!

    刚开始学习linux操作系统是总是很茫然,无所适从,以下是自己总结的工作经验,仅供参考! 一.准备资源 安装前需要准备的资源有linux系统centos7.6发行版系统镜像,vmware workst ...

  7. C++ 字符串截取转换及字符流控制

    文章由来 ------------------工作需要缓冲区里的字符串控制,还是混合编译的那种,根据协议来定义截取各种字符流,控制大小长度,截取返回的内容然后转换成特定的类型, 可能表述不是那么正确, ...

  8. MariaDB 安装

    MariaDB的所有下载都位于官方MariaDB基金会网站的下载部分. 单击所需版本的链接,并显示多个操作系统,体系结构和安装文件类型的下载列表. 在LINUX / UNIX上安装 如果你熟悉Linu ...

  9. SQL 内部连接

    内部链接INNER JOIN关键字选择两个表中具有匹配值的记录. SQL INNER JOIN 语法 SELECT column_name(s) FROM table1 INNER JOIN tabl ...

  10. shell变量,字符串,数组

    一.shell变量定义: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头: 中间不能有空格,可以使用下划线: 不能使用标点符号: 不能使用bash里的关键字. 变量使用: 使用一个定义过的 ...