共用方式為


MockResponsePlugin

模擬回應。

命令提示字元的螢幕快照,其中具有 Dev Proxy,模擬對 GitHub API 的要求回應。

外掛程式實例定義

{
  "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/postshttps://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 與模擬檔案相同的目錄中的映像。