Moco 详解
一、下载及安装:
运行环境:
- JAVA环境
- linux
下载地址:https://github.com/dreamhead/moco
下载下来的是一个jar包,如:moco-runner-0.12.0-standalone.jar
把这个jar包上传到linux服务器上,然后在与moco-runner-0.12.0-standalone.jar同级的目录下创建 foo.json 文件:
[
{
"response" :
{
"text" : "Hello, Moco"
}
}
]
Moco的运行非常简单,只需要一行命令即可: java -jar <path-to-moco-runner> http -p <monitor-port> -c < configuration -file>
<path-to-moco-runner>
:moco-runner-0.11.0-standalone.jar包的路径<monitor-port>
:http服务监听的端口<configuration -file>
:配置文件路径
java -jar moco-runner-0.12.-standalone.jar http -p -c foo.json
通过浏览器访问服务器的9999端口:
返回正确就说明Moco服务搭建成功了。
虽然说服务运行没问题了,但是总觉得启动和停止很麻烦,现在用shell来写一个启动和停止的脚本
启动start.sh:
#!/bin/bash
dirWiremock=`pwd`
getCount=`ps -ef | grep "moco-runner" | grep -v "grep" |wc -l`
wiremock_jar=${dirWiremock}/moco-runner-0.12.-standalone.jar
port=
exe_name=moco-runner
if [ $getCount -ne ]; then
echo $exe_name is already running with $ssu_pid_count processes
echo $exe_name started failed
exit ;
else
nohup java -jar ${wiremock_jar} http -p ${port} -c foo.json &
echo "Start success!......"
fi
停止stop.sh:
#!/bin/sh
exe_name=moco-runner # 进入可执行目录
base_path=$(cd `dirname $`; pwd)
cd $base_path # 停止进程
exe_pid_path=`pwd`
exe_pid_list=`ps -ef | grep $exe_name|grep -v 'grep'|awk '{print $2}'`
our_pid_list=""
for exe_pid in $exe_pid_list
do
pid_path=`pwdx $exe_pid | awk '{print $2}'`
if [ "$pid_path"x == "$exe_pid_path"x ]; then
our_pid_list=$our_pid_list" "$exe_pid
fi
done if [ "$our_pid_list"x != "x" ]; then
kill - $our_pid_list
echo $exe_name process"$our_pid_list" killed
else
echo $exe_name is not running
fi
运行shell脚本,启动和停止就方便多了。
二、Moco配置
启动服务之后,必然会根据需求stub出各种各样接口反馈,我们会把这个配置放在一个json文件中,启动Moco的时候,需要指定使用的配置文件路径,这样配置就可以生效了。Moco服务可以检测到配置文件的变更,假如你修改了配置文件,不需要重新启动Moco,服务照样可以生效。更详细的配置介绍请查看:https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md
配置文件的工作原理大致如下:
如何在配置文件添加注释
json不支持注释,想要添加注释的话,可以在description字段中加入描述
约定请求Body
约定接口的uri
约定请求参数
约定请求方法
约定HTTP版本
约定请求头部
约定cookie
约定请求form
表单可以添加多项,多项的时候,必须全部匹配,接口才算匹配成功
约定以指定xml作为请求body
用xpath对请求进行匹配
约定以指定json作为请求body
用正则表达式对请求进行匹配
匹配操作
设置Response content
设置Response 状态码
设置Response HTTP版本
设置Response 头部
设置重定向
设置cookie
挂载文件
Moco 详解的更多相关文章
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- Node.js npm 详解
一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...
随机推荐
- LOJ576 「LibreOJ NOI Round #2」签到游戏
题目 先进行一个转化: 每次花费\(\gcd\limits_{i=l+1}^rB_i\)的代价,可以连\((l,r)\)这一条边. 然后我们需要求\(0\sim n\)的最小生成树. 根据Kruska ...
- Linux 测试IP和端口是否能访问
一. 使用wget判断 wget是linux下的下载工具,需要先安装. 用法: wget ip:port 连接存在的端口 转自:https://blog.csdn.net/weixin_3768923 ...
- Buy a Ticket CodeForces - 938D (dijkstra)
大意: n节点无向图, 点$i$到点$j$的花费为$2dis(i,j)+a[j]$, 对于每个点, 求最少花费. 每条边权翻倍, 源点S向所有点$i$连边, 权为$a[i]$, 答案就为$S$到每个点 ...
- leecode100热题 HOT 100(2)
# 题名 题解 通过率 难度 出现频率 142 环形链表 II 43.3% 中等 146 LRU缓存机制 43.3% 中等 148 排序链表 ...
- [转载]十六进制数的两种不同表示:0x和H
来源:https://blog.csdn.net/u013773644/article/details/519811860x是16进制的前缀,H是16进制的后缀 都是表示十六进制数,意义上没有什么区别 ...
- Caffe中im2col的实现解析
这里,我是将Caffe中im2col的解析过程直接拉了出来,使用C++进行了输出,方便理解.代码如下: #include<iostream> using namespace std; bo ...
- rabbitmq一键部署脚本
1.新建一个名字叫 auto_install_rabbitmq.sh 的文件 2.将下面脚本拷贝到文件中,具体操作步骤在注释里面 #环境 linux #一键安装rabitmq,在linux环境中使用 ...
- 配置好ssh互信还需要密码登录
通过ssh-keygen生成公私钥之后,再使用 ssh-copy-id将公钥传送到远程用户.这两步完成后,验证是否能等免密登录,发现并不能. 问题排查: 1..ssh 目录的权限应为 700 auth ...
- deep_learning_Function_numpy.linspace()
numpy.linspace()等差数列函数 在numpy中的linspace()函数类似与arange().range()函数: arange() .range() 可以通过指定开始值.终值和步长创 ...
- lightinthebox程序bug zencart
1.清空旧产品分类,新增分类与产品,前台首页不显示中间栏,提示无产品:布局设置 -(Main Page - Opens with Category)首页显示某分类,把新增的某分类ID填上或者设为0即可 ...