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..."
}
}
}
模擬檔案屬性
屬性 | Description | 必要 |
---|---|---|
request |
定義 要回應之要求的要求物件 | 是 |
response |
定義要傳回之回應的回應物件 | 是 |
要求物件
每個要求都有下列屬性:
屬性 | Description | 必要 | 預設值 | 範例值 |
---|---|---|---|---|
url |
要回應之 API 端點的絕對 URL | 是 | https://jsonplaceholder.typicode.com/posts |
|
method |
用來比對要求與的 HTTP 動詞 url |
否 | GET |
GET |
nth |
判斷當攔截第 n 次的要求時,Proxy 應該只在之後回應 | 否 | 2 |
|
bodyFragment |
應該出現在要求本文中的字串 | 否 | foo |
備註
如果您想要比對 URL 中的任何字元系列,請在 屬性中使用url
星號 *
() 。 例如, https://jsonplaceholder.typicode.com/*
比對 https://jsonplaceholder.typicode.com/posts
和 https://jsonplaceholder.typicode.com/comments
。 在執行時間上,Dev Proxy 會將每個 *
轉換成正則表示式 .*
。
定義模擬時,請先放置最特定的模擬。 例如,如果您有兩個模擬,一個用於 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
。 Dev Proxy 只會針對 以外的GET
要求使用bodyFragment
。
回應物件
每個回應都有下列屬性:
屬性 | Description | 必要 | 預設值 | 範例值 |
---|---|---|---|---|
body |
要當做要求回應傳送的本文 | 否 | empty | { "foo": "bar" } |
statusCode |
回應 HTTP 狀態代碼 | 否 | 200 |
404 |
headers |
要包含在回應中的標頭陣列 | 否 | empty | [{ name: "content-type", "value": "application/json" }] |
備註
如果您想要傳回二進位數據,請將 body
屬性設定為字串值, @
開頭為 ,後面接著相對於模擬檔案的檔案路徑。 例如, @picture.jpg
傳回儲存在檔案中 picture.jpg
與模擬檔案相同的目錄中的映像。