共用方式為


模擬回應

若要定義模擬回應,請在目前的工作目錄中建立名為 mocks.json 的檔案。 此檔案可讓您針對您使用的每個項目定義一組特定的模擬。 檔案包含包含模擬物件的陣列的物件mocks

提示

您可以使用 MockGeneratorPlugin 來根據攔截的要求產生模擬檔案,而不是手動建立模擬檔案。

下列設定示範兩個模擬回應,以擷取目前使用者的相關信息。 當您要求目前使用者的相關信息時,Proxy 會以模擬回應回應。 當您要求使用者相片的相關信息時,Proxy 會傳回 404 狀態代碼。

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/mockresponseplugin.schema.json",
  "mocks": [
    {
      "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"
          }
        ]
      }
    },
    {
      "request": {
        "url": "https://graph.microsoft.com/v1.0/me/photo",
        "method": "GET"
      },
      "response": {
        "statusCode": 404
      }
    }
  ]
}

順序優先順序

模擬會以檔案中 mocks.json 定義的順序進行比對。 如果您使用相同的 URL 和方法定義多個回應,則會使用第一個相符的回應。

當您使用下列組態時,Proxy 會以 500 Internal Server Error回應 的所有GET要求https://graph.microsoft.com/v1.0/me/photo

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/mockresponseplugin.schema.json",
  "mocks": [
    {
      "request": {
        "url": "https://graph.microsoft.com/v1.0/me/photo",
        "method": "GET"
      },
      "response": {
        "statusCode": 500
      }
    },
    {
      "request": {
        "url": "https://graph.microsoft.com/v1.0/me/photo",
        "method": "GET"
      },
      "response": {
        "statusCode": 404
      }
    }
  ]
}

通配符支援

Proxy 支援在 URL 屬性中使用通配符。 您可以使用星號字元 (*) 來比對URL中的任何一系列字元。

當您使用下列組態時,Proxy 會回應所有要求,以取得具有相同回應的任何使用者配置檔。

{
  "request": {
    "url": "https://graph.microsoft.com/v1.0/users/*"
  },
  "response": {
    "body": {
      "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
      "businessPhones": ["+1 425 555 0109"],
      "displayName": "Adele Vance",
      "givenName": "Adele",
      "jobTitle": "Product Marketing Manager",
      "mail": "AdeleV@M365x214355.onmicrosoft.com",
      "mobilePhone": null,
      "officeLocation": "18/2111",
      "preferredLanguage": "en-US",
      "surname": "Vance",
      "userPrincipalName": "AdeleV@M365x214355.onmicrosoft.com",
      "id": "87d349ed-44d7-43e1-9a83-5f2406dee5bd"
    }
  }
}

當您使用下列設定時,當您要求取得任何使用者相片的二進位檔時,Proxy 會從磁碟傳回相同的映像。

{
  "request": {
    "url": "https://graph.microsoft.com/v1.0/users/*/photo/$value"
  },
  "response": {
    "body": "@picture.jpg",
    "headers": [
      {
        "name": "content-type",
        "value": "image/jpeg"
      }
    ]
  }
}

當您使用下列組態時,當您要求使用任何查詢字串參數取得目前使用者配置檔時,Proxy 會傳回相同的回應。

{
  "request": {
    "url": "https://graph.microsoft.com/v1.0/me?*"
  },
  "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"
    }
  }
},

以檔案的內容回應

若要讓模擬檔案保持乾淨且組織,您可以將響應的內容儲存在個別的檔案中,並在模擬檔案中參考它。 若要指示 Dev Proxy 從檔案載入模擬回應本文,請將 屬性設定 body@ ,後面接著相對於模擬檔案的檔案路徑。

例如,下列模擬回應組態會指示 Dev Proxy 使用與模擬檔案位於相同資料夾中的檔案內容response.json回應任何要求https://graph.microsoft.com/v1.0/me

{
  "request": {
    "url": "https://graph.microsoft.com/v1.0/me",
    "method": "GET"
  },
  "response": {
    "body": "@response.json",
    "headers": [
      {
        "name": "content-type",
        "value": "application/json; odata.metadata=minimal"
      }
    ]
  }
}

@使用 -token 可搭配文字和二進位檔使用。

Microsoft Graph Batch 支援

Dev Proxy 支援模擬批次要求傳送至 Microsoft Graph 的回應。

在模擬檔案中包含批次要求的回應沒有任何特殊需求,不過,如果要求與模擬回應不相符, 502 Bad Gateway 則會傳回回應。

未仿真的要求支援

開發 Proxy 支援在 Proxy 攔截未仿真的要求時擲回錯誤。 失敗未模擬要求的能力對於識別您在模擬檔案中遺漏的要求很有用。

若要啟用此功能,請在 devproxyrc 檔案中新增並啟用 blockUnmockedRequestsMockResponsePlugin config 區段的設定。

{
  "mocksPlugin": {
    "mocksFile": "mocks.json",
    "blockUnmockedRequests": true
  }
}

攔截未仿真的要求時, 502 Bad Gateway 會傳回回應。

後續步驟

深入瞭解MockResponsePlugin。

範例

另請參閱相關的 Dev Proxy 範例: