Макет ответов
Чтобы определить макеты ответов, создайте файл с именем mocks.json
в текущем рабочем каталоге. Этот файл позволяет определить определенный набор макетов для каждого проекта, с которым вы работаете. Файл содержит объект с массивом mocks
, содержащим макетные объекты.
Совет
Вместо создания файла макетов вручную можно использовать MockGeneratorPlugin
для создания файла макетов на основе перехваченных запросов.
В следующей конфигурации показаны два макета ответа для получения сведений о текущем пользователе. При запросе сведений о текущем пользователе прокси-сервер отвечает макетным ответом. При запросе сведений о фотографии пользователя прокси-сервер возвращает код состояния 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-адресом и методом используется первый соответствующий ответ.
При использовании следующей конфигурации прокси-сервер отвечает на все GET
запросы к https://graph.microsoft.com/v1.0/me/photo
с помощью 500 Internal Server Error
.
{
"$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
}
}
]
}
Поддержка подстановочных знаков
Прокси-сервер поддерживает использование подстановочных знаков в свойстве URL. Вы можете использовать звездочку (*
), чтобы сопоставить любую последовательность символов в URL-адресе.
При использовании следующей конфигурации прокси-сервер отвечает на все запросы, чтобы получить профиль любого пользователя с одинаковым ответом.
{
"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"
}
}
}
При использовании следующей конфигурации прокси-сервер возвращает тот же образ с диска при запросе на получение двоичного файла фотографии любого пользователя.
{
"request": {
"url": "https://graph.microsoft.com/v1.0/users/*/photo/$value"
},
"response": {
"body": "@picture.jpg",
"headers": [
{
"name": "content-type",
"value": "image/jpeg"
}
]
}
}
При использовании следующей конфигурации прокси-сервер возвращает тот же ответ при запросе на получение профиля текущего пользователя с любым параметром строки запроса.
{
"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"
}
}
},
Ответ с содержимым файла
Чтобы сохранить файл макетов в чистоте и упорядочении, можно сохранить содержимое ответа в отдельном файле и сослаться на него в файле макетов. Чтобы указать Прокси разработчика, чтобы загрузить текст макета ответа из файла, присвойте свойству body
@
значение , а затем путь к файлу относительно файла макетов.
Например, следующая конфигурация макета ответа указывает, что прокси-сервер разработчика будет отвечать на любой запрос https://graph.microsoft.com/v1.0/me
, используя содержимое файла, расположенного response.json
в той же папке, что и файл макетов.
{
"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"
}
]
}
}
Использование маркера @
работает с текстовыми и двоичными файлами.
Поддержка пакетной службы Microsoft Graph
Прокси-сервер разработки поддерживает макеты ответов, которые отправляются в пакетных запросах в Microsoft Graph.
Нет особых требований к включению ответов на пакетные запросы в макеты файлов, но если запрос не соответствует макету ответа, 502 Bad Gateway
возвращается ответ.
Запрос на поддержку без макета
Прокси-сервер разработки поддерживает выдачу ошибки, когда прокси-сервер перехватывает незамеченный запрос. Возможность неисправных запросов полезна для идентификации пропущенных запросов в файле макетов.
Чтобы включить эту функцию, добавьте и включите blockUnmockedRequests
параметр в раздел конфигурации MockResponsePlugin в файле devproxyrc .
{
"mocksPlugin": {
"mocksFile": "mocks.json",
"blockUnmockedRequests": true
}
}
При перехвате 502 Bad Gateway
незамеченного запроса возвращается ответ.
Следующий шаг
Дополнительные сведения о MockResponsePlugin.
Примеры
См. также связанные примеры прокси-сервера разработки: