Макет ответов

Чтобы определить макеты ответов, создайте файл с именем 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.

Примеры

См. также связанные примеры прокси-сервера разработки: