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. 数据库(四)—— Redis数据库

    目录 redis 一.redis的安装部署 二.redis配置文件 1.基本配置 2.安全配置 3.查看配置信息 三.redis持久化 1.持久化类型 2.RDB持久化 3.AOF持久化(append ...

  2. 实验报告(五)&第七周学习总结

    实验目的 理解抽象类与接口的使用: 了解包的作用,掌握包的设计方法. 实验要求 掌握使用抽象类的方法. 掌握使用系统接口的技术和创建自定义接口的方法. 了解 Java 系统包的结构. 掌握创建自定义包 ...

  3. kubernetes里面有时候centos源用不了

    kubernetes里面有时候centos源用不了,快速配一个阿里云的源. mkdir /etc/yum.repos.d/yangback;mv /etc/yum.repos.d/* /etc/yum ...

  4. JavaScript 事件——“模拟事件”的注意要点

    DOM中的事件模拟 三个步骤: 首先通过document.createEvent()方法创建event对象,接收一个参数,即表示要创建的事件类型的字符串: UIEvents(DOM3中的UIEvent ...

  5. data-*存数据,拿出ul li中的数据

    <ul class="questions"> <li> <div class="question">1.您的年龄是?< ...

  6. eclipse中创建的spring-boot项目在启动时指定加载那一个配置文件的设置

    步骤如下:鼠标点击项目右键—>Run As—>Run Configurations—>Java Application (如下图) 鼠标右键点击Java Application——— ...

  7. QProcess

    QT应用在windows系统下调用bat脚本,居然报错了.该BAT脚本,是用来检查svn.exe这个命令行工具,是否在当前系统里存在.在cmd终端里,一直是可正常执行的.但是在windows7家庭中文 ...

  8. 异常:Error response from daemon: conflict: unable to delete 6fa48e047721 (cannot be forced) - image has dependent child images

    在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器(哪怕是已经停止的容器),否则无法删除该镜像. 停止容器 # docker stop $(docker ps -a | grep ...

  9. c++ vector push_back对象的时候存起来的是拷贝[转]

    比如 class C1; vector<C1> vec; C1* p=new C1; vec v1; v1.push_back(&(*p)); delete p; 这里,传进函数的 ...

  10. c++ 获取文件图标,类型名称,属性 SHGetFileInfo

    SHGetFileInfo是一个相当实用的Windows API函数. // [MoreWindows工作笔记4] 获取文件图标,类型名称,属性 SHGetFileInfo #include < ...