模擬回應
若要定義模擬回應,請在目前的工作目錄中建立名為 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 檔案中新增並啟用 blockUnmockedRequests
MockResponsePlugin config 區段的設定。
{
"mocksPlugin": {
"mocksFile": "mocks.json",
"blockUnmockedRequests": true
}
}
攔截未仿真的要求時, 502 Bad Gateway
會傳回回應。
後續步驟
深入瞭解MockResponsePlugin。
範例
另請參閱相關的 Dev Proxy 範例: