- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Mountebank 创建一个冒名顶替者进程并希望记录请求和响应。为了创建一个 http 冒名顶替者,我使用了以下 CURL
命令,如他们的文档中所述。
curl -i -X POST -H 'Content-Type: application/json' http://127.0.0.1:2525/imposters --data '{
"port": 6568,
"protocol": "http",
"name": "proxyAlways",
"stubs": [
{
"responses": [
{
"proxy": {
"to": "http://localhost:8000",
"mode": "proxyAlways",
"predicateGenerators": [
{
"matches": {
"method": true,
"path": true,
"query": true
}
}
]
}
}
]
}
]
}'
我有另一台运行在 http://localhost:8000
的服务器,它正在监听所有到达端口 6568 的请求。
现在我的服务器输出:
mb
info: [mb:2525] mountebank v1.6.0-beta.1102 now taking orders - point your browser to http://localhost:2525 for help
info: [mb:2525] POST /imposters
info: [http:6568 proxyAlways] Open for business...
info: [http:6568 proxyAlways] ::ffff:127.0.0.1:55488 => GET /
我想记录所有的请求和响应,但现在无法完成。当我输入 curl -i -X GET -H 'Content-Type: application/json' http://127.0.0.1:6568/
它给了我一个响应,但我如何存储它?
谁能给我解释一下
save off the response in a new stub in front of the proxy response:
(from this Mountebank documentation)
最佳答案
如何存储代理结果
简短的回答是江湖骗子已经存储了它。您可以通过查看 curl http://localhost:2525/imposters/6568
的输出来验证这一点。真正的问题是如何重放存储的响应?
江湖代理的常见使用场景是您在 mb
的一个运行实例上记录代理响应,保存结果,然后启动下一个 mb
实例> 使用那些已保存的回复。你这样做的方法是让被测系统在你需要的任何条件下通过江湖代理与你试图 stub 的服务对话,然后通过发送一个保存响应(及其请求谓词) HTTP GET
或 DELETE
到 http://localhost:2525/imposters/6568?removeProxies=true&replayable=true
。您将该响应的 JSON 正文提供给下一个 mb
实例,要么通过 REST API,要么通过将其保存在磁盘上并使用类似 mb --configfile savedProxyResults 的命令启动 mountebank .json
。那时,mountebank 正在对请求提供完全相同的响应,而无需连接到下游服务。
代理创建新 stub
你的最后一个问题围绕着理解 proxyAlways
模式是如何工作的。默认的 proxyOnce
模式意味着江湖代理第一次看到唯一满足谓词的请求时,它会查询下游服务并保存响应。下一次看起来满足完全相同谓词的请求时,它会避免下游调用并简单地返回保存的结果。对于相同 请求,它只代理下游一次。另一方面,proxyAlways
模式始终向下游发送请求,并保存同一请求的响应列表。
为了清楚起见,在您复制的示例中,我们关心请求中的method
、path
和query
字段,所以如果我们看到两个请求的这三个字段的组合完全相同,我们需要知道是否应该将保存的响应发回或继续代理。想象一下我们首先发送:
GET /test?q=elephants
方法
为GET
,路径
为/test
,查询
code> 是 q=elephants
。由于这是第一个请求,我们将它发送到下游服务器,它返回一个主体:
No results
无论您将 mountebank 设置为哪种代理模式,这都是正确的,因为它必须至少向下游查询一次。现在假设,在我们考虑的时候,下游服务添加了一头大象,然后我们的测试系统发出了同样的调用:
GET /test?q=elephants
如果我们处于 proxyOnce
模式,大象被添加到真实服务中的事实根本不重要,我们将继续返回我们保存的响应:
No results
如果您如上所述关闭 mountebank 进程并重新启动它,您会看到相同的行为。在您保存的配置文件中,您会看到类似这样的内容(稍微简化一下):
"stubs": [
{
"predicates": [{
"deepEquals': {
"method": "GET",
"path": "/test",
"query": { "q": "elephants" }
}
}],
"responses": [
{
"is": {
"body": "No results"
}
}
]
}
]
只有一个 stub 。另一方面,如果我们使用 proxyAlways
,那么第二次调用 GET/test?q=elephants
将产生新的大象:
1. Jumbo reporting for duty!
这很重要,因为如果我们关闭 mountebank 进程并重新启动它,现在我们的测试可以依赖于我们将循环通过两个响应这一事实:
"stubs": [
{
"predicates": [{
"deepEquals': {
"method": "GET",
"path": "/test",
"query": { "q": "elephants" }
}
}],
"responses": [
{
"is": {
"body": "No results"
}
},
{
"is": {
"body": "1. Jumbo reporting for duty!"
}
}
]
}
]
关于python - 如何在 Mountebank 中使用代理记录请求和响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36705088/
我正在尝试检查 Entry 中是否存在重复项,并使用内联消息提醒用户该数字存在。 $(document).ready(function(){ $("#con1").blur(function(
我有一个基于类的 View 。我在引导模式上使用 Ajax。为了避免页面刷新,我想使用此类基于 View 返回 JSON 响应而不是 HTTP 响应,但我只看到了如何为基于函数的 View 返回 JS
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我有一个大型内部企业基于 Web 的应用程序在 IIS6 上运行 ASP.NET 3.5,生成 401 个“未经授权”响应,然后是 200 个“Ok”响应(如 Fiddler 所述)。我知道为什么会发
感谢您研究我的问题。 我有一个node/express服务器,配置了一个server.js文件,它调用urls.js,而urls.js又调用 Controller 来处理http请求,所有这些都配置相
当我使用以下命令时,我得到正确的 JSON 响应: $ curl --data "regno=&dob=&mobile=" https://vitacademics-rel.herokuapp.co
我有一个非常简单的 RESTful 服务,它通过 POST 接收一些表单数据,其目的是在云存储(Amazon S3、Azure Blob 存储等)中简单地保留文本主体(具有唯一 ID)作为一个文件..
UDP 不发送任何 ack,但它会发送任何响应吗? 我已经设置了客户端服务器UDP程序。如果我让客户端向不存在的服务器发送数据,那么客户端会收到任何响应吗? 我的假设是; 客户端 --> 广播服务器地
我有一个电梯项目,其中 有一个扩展 RestHelper 的类,看起来像这样 serve{ "api" / "mystuff" prefix { case a
我们正在寻求覆盖 Kong 错误响应结构并编写自定义消息(即用我们的自定义消息替换“超出 API 速率限制”、“无效的身份验证凭据”等)。 我们要找的错误响应结构(代码是自定义的内部错误代码,与HTT
我正在尝试监听 EKEventStoreChangedNotification 以检查当我的应用程序处于后台时日历是否已更改。 我在 View Controller 的 initWithNibMeth
我了解 javascript,并且正在学习 ASP.NET C# 我想要做什么(完成的是javascript): document.getElementById('divID-1'
是否可以过滤所有 har 对象并仅获取 POST 请求/响应?也许在初始化 BrowserMobProxyServer 期间是这样做的方法?我需要将 har 对象保存到文件中并上传到 har 查看器。
我正在尝试向 Oauth 的 API 发送响应。遗憾的是,Symfony2 文档在解释 $response->headers->set(...); 的所有不同部分方面做得很差。 这是我的 OauthC
我正在尝试测试用例来模拟 api 调用,并使用 python 响应来模拟 api 调用。 下面是我的模拟, with responses.RequestsMock() as rsps: url
在尝试在 Haskell 中进行一些领域驱动设计时,我发现自己遇到了这个问题: data FetchAccessories = FetchAccessories data AccessoriesRes
我正在与 ANT+ USB 棒连接,并用项目 react 器替换我自己天真的“MessageBus”,因为它看起来非常合适。 USB接口(interface)本质上是异步的(单独的输入/输出管道),我
我正在将项目迁移到AFNetworking 2.0。使用AFNetworking 1.0时,我编写了代码来记录控制台中的每个请求/响应。这是代码: -(AFHTTPRequestOperation *
我有以下代码段。 ajaxRequest.onreadystatechange = function(){ if(ajaxRequest.readyState == 4){
我有问题......我在 php 中有一个监听器脚本可以执行以下操作: if ($count != 1) {echo 'no';} else { echo "yes";} 因此它会回显"is"或“
我是一名优秀的程序员,十分优秀!