MockResponsePlugin
模拟响应。
插件实例定义
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "mocksPlugin"
}
配置示例
{
"mocksPlugin": {
"mocksFile": "mocks.json"
}
}
配置属性
属性 | 说明 | 默认 |
---|---|---|
mocksFile |
包含模拟响应的文件的路径 | mocks.json |
blockUnmockedRequests |
返回 502 Bad Gateway 未模拟的请求的响应 |
false |
命令行选项
名称 | 说明 | 默认 |
---|---|---|
-n, --no-mocks |
禁用加载模拟请求 | false |
--mocks-file |
包含模拟响应的文件的路径 | - |
模拟文件示例
下面是模拟对象的示例。
使用正文进行响应
使用 200 OK 响应和 JSON 正文响应请求。
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me",
"method": "GET"
},
"response": {
"body": {
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"businessPhones": ["+1 412 555 0109"],
"displayName": "Megan Bowen",
"givenName": "Megan",
"jobTitle": "Auditor",
"mail": "MeganB@M365x214355.onmicrosoft.com",
"mobilePhone": null,
"officeLocation": "12/1110",
"preferredLanguage": "en-US",
"surname": "Bowen",
"userPrincipalName": "MeganB@M365x214355.onmicrosoft.com",
"id": "48d31887-5fad-4d73-a9f5-3c356e68a038"
},
"headers": [
{
"name": "content-type",
"value": "application/json; odata.metadata=minimal"
}
]
}
}
响应时出现错误
使用“404 未找到”响应响应响应请求。
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me/photo",
"method": "GET"
},
"response": {
"statusCode": 404
}
}
使用二进制数据进行响应
使用从磁盘上的文件加载的二进制映像响应请求。
{
"request": {
"url": "https://graph.microsoft.com/v1.0/users/*/photo/$value",
"method": "GET"
},
"response": {
"body": "@picture.jpg",
"headers": [
{
"name": "content-type",
"value": "image/jpeg"
}
]
}
}
根据 nth
请求响应
仅在第二次调用请求后才响应请求。
{
"request": {
"url": "https://graph.microsoft.com/v1.0/external/connections/*/operations/*",
"method": "GET",
"nth": 2
},
"response": {
"statusCode": 200,
"body": {
"id": "1.neu.0278337E599FC8DBF5607ED12CF463E4.6410CCF8F6DB8758539FB58EB56BF8DC",
"status": "completed",
"error": null
}
}
}
响应与请求正文匹配
响应正文中包含特定字符串的请求。
{
"request": {
"url": "https://login.microsoftonline.com/fa15d692-e9c7-4460-a743-29f29522229/oauth2/v2.0/token",
"method": "POST",
"bodyFragment": "scope=https%3A%2F%2Fapi.contoso.com%2FDocuments.Read"
},
"response": {
"headers": [
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
}
],
"body": {
"token_type": "Bearer",
"expires_in": 3599,
"ext_expires_in": 3599,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSU..."
}
}
}
模拟文件属性
属性 | 说明 | 必需 |
---|---|---|
request |
定义要响应的请求的请求对象 | 是 |
response |
定义要返回的响应的响应对象 | 是 |
请求对象
每个请求具有以下属性:
属性 | 说明 | 必须 | 默认值 | 示例值 |
---|---|---|---|---|
url |
要响应的 API 终结点的绝对 URL | 是 | https://jsonplaceholder.typicode.com/posts |
|
method |
用于匹配请求的 HTTP 谓词 url |
否 | GET |
GET |
nth |
确定代理应在第 n 次截获请求后才做出响应 | 否 | 2 |
|
bodyFragment |
请求正文中应存在的字符串 | 否 | foo |
注解
如果要匹配 URL 中的任何字符系列,请使用星号 (*
属性中的 url
) 。 例如,https://jsonplaceholder.typicode.com/*
匹配 https://jsonplaceholder.typicode.com/posts
和 https://jsonplaceholder.typicode.com/comments
。 在运行时,开发代理将每个 *
转换为正则表达式 .*
。
定义模拟时,首先放置最具体的模拟。 例如,如果有两个模拟,一个用于 https://jsonplaceholder.typicode.com/posts
,一个用于 https://jsonplaceholder.typicode.com/*
,将第一个模拟放在第一个模拟前。 否则,Dev Proxy 首先匹配第二个模拟,并返回所有请求的 https://jsonplaceholder.typicode.com/*
响应。
nth
如果需要向同一请求 URL 发送不同的 ,请使用 属性。 例如,使用它来模拟长时间运行的操作。 首次调用 API 时,它会返回包含消息的 inprogress
响应。 第二次调用 API 时,它会返回包含消息的 completed
响应。 有关 属性的详细信息 nth
,请参阅 模拟 nth 请求。
bodyFragment
使用 属性,可以根据正文内容匹配请求。 例如,如果要匹配正文中包含字符串的请求 foo
,请将 bodyFragment
属性设置为 foo
。 开发代理仅对 以外的GET
请求使用 bodyFragment
。
响应对象
每个响应具有以下属性:
属性 | 说明 | 必须 | 默认值 | 示例值 |
---|---|---|---|---|
body |
要作为对请求的响应发送的正文 | 否 | empty | { "foo": "bar" } |
statusCode |
响应 HTTP 状态代码 | 否 | 200 |
404 |
headers |
要包含在响应中的标头数组 | 否 | empty | [{ name: "content-type", "value": "application/json" }] |
注解
如果要返回二进制数据,请将 body
属性设置为字符串值,该值以 @
开头,后跟相对于 mocks 文件的文件路径。 例如, @picture.jpg
返回存储在 picture.jpg
与 mocks 文件位于同一目录中的 文件中的图像。