Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Имитирует ответы.
Определение экземпляра подключаемого модуля
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mocksPlugin"
}
Пример конфигурации
{
"mocksPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.schema.json",
"mocksFile": "mocks.json"
}
}
Свойства конфигурации
Недвижимость | Описание | По умолчанию |
---|---|---|
mocksFile |
Путь к файлу с макетными ответами | mocks.json |
blockUnmockedRequests |
Возврат 502 Bad Gateway ответа на запросы, которые не высмеивались |
false |
Параметры командной строки
Имя | Описание | По умолчанию |
---|---|---|
-n, --no-mocks |
Отключение запросов на загрузку макетов | false |
--mocks-file |
Путь к файлу с макетными ответами | - |
Примеры файлов макетов
Ниже приведены примеры макетных объектов.
Ответ с текстом
Ответ на запрос с ответом 200 OK и текстом JSON.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.mocksfile.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"
}
]
}
}
]
}
Ответ с ошибкой
Ответ на запрос с ответом 404 Not Found.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me/photo",
"method": "GET"
},
"response": {
"statusCode": 404
}
}
]
}
Ответ с двоичными данными
Ответьте на запрос с двоичным изображением, загруженным из файла на диске.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"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
Отвечайте на запрос только после второго вызова.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"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
}
}
}
]
}
Реагирование на соответствие тексту запроса
Ответьте на запрос, содержащий определенную строку в тексте.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"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..."
}
}
}
]
}
Макеты свойств файла
Недвижимость | Описание | Обязательно |
---|---|---|
request |
Объект request , определяющий запрос для ответа | да |
response |
Объект ответа , определяющий ответ, возвращаемый | да |
Объект запроса
Каждый запрос имеет следующие свойства:
Недвижимость | Описание | Обязательно | Значение по умолчанию | Примерное значение |
---|---|---|---|---|
url |
Абсолютный URL-адрес конечной точки API для ответа | да | https://jsonplaceholder.typicode.com/posts |
|
method |
HTTP-команда, используемая для сопоставления запросов с url |
нет | GET |
GET |
nth |
Определяет, что прокси-сервер должен отвечать только после перехвата запроса на n-е время | нет | 2 |
|
bodyFragment |
Строка, которая должна присутствовать в тексте запроса | нет | foo |
Замечания
Используйте звездочку (*
) в свойстве url
, если вы хотите сопоставить любую серию символов в URL-адресе. Например, https://jsonplaceholder.typicode.com/*
соответствует https://jsonplaceholder.typicode.com/posts
и https://jsonplaceholder.typicode.com/comments
. Во время выполнения прокси-сервер разработки преобразует каждый из них *
в регулярное выражение .*
.
При определении макетов сначала поместите наиболее конкретные макеты. Например, если у вас есть два макета, один для https://jsonplaceholder.typicode.com/posts
одного и один для https://jsonplaceholder.typicode.com/*
, поместите первый макет первым. В противном случае прокси-сервер разработки соответствует второму макету и возвращает ответ для https://jsonplaceholder.typicode.com/*
всех запросов.
Используйте свойство, nth
если необходимо отправить другой URL-адрес запроса. Например, используйте его для имитации длительной операции. При первом вызове API он возвращает ответ с сообщением inprogress
. Во второй раз при вызове API он возвращает ответ с сообщением completed
. Дополнительные сведения о свойстве см. в запросе nth
Mock nth.
bodyFragment
Используя свойство, можно сопоставить запросы на основе содержимого текста. Например, если вы хотите сопоставить запросы, содержащие foo
строку в тексте, задайте bodyFragment
для свойства foo
значение . Прокси-сервер разработки используется bodyFragment
только для запросов, отличных от GET
.
Объект Response
Каждый ответ имеет следующие свойства:
Недвижимость | Описание | Обязательно | Значение по умолчанию | Примерное значение |
---|---|---|---|---|
body |
Текст для отправки в качестве ответа на запрос | нет | пустой | { "foo": "bar" } |
statusCode |
Код состояния HTTP ответа | нет | 200 |
404 |
headers |
Массив заголовков для включения в ответ | нет | пустой | [{ name: "content-type", "value": "application/json" }] |
Замечания
Если требуется возвращать двоичные данные, задайте body
для свойства строковое значение, которое начинается с @
пути к файлу-макету относительно файла макетов. Например, возвращает изображение, хранящееся в @picture.jpg
файле в том же каталоге, picture.jpg
что и файл макетов.