Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На первый взгляд
Цель: Отладка приложения при моделировании ошибок API с использованием Dev Proxy
Время: 15 минут
Подключаемые модули:GenericRandomErrorPlugin
Предварительные требования:Настройка прокси-сервера разработки, VS Code
При создании приложений, вызывающих API, необходимо убедиться, что код правильно обрабатывает ошибки. Объединяя прокси-сервер разработки с отладчиком Visual Studio (VS) Code, вы можете имитировать ошибки API и выполнить шаги по обработке кода обработки ошибок, чтобы убедиться, что он работает правильно.
Обзор
Отладка с помощью прокси-сервера разработки включает три шага.
- Настройка VS Code для маршрутизации HTTP-запросов через прокси разработки
- Настройка прокси-сервера разработки для имитации определенных ошибок
- Установка точек останова в коде обработки ошибок и отладка
Настройка VS Code для отладки с помощью прокси-сервера разработки
Настройка VS Code зависит от используемого языка программирования. В следующих разделах показано, как настроить VS Code для приложений Node.js, .NET и Python.
Node.js
Чтобы отладить приложение Node.js с помощью прокси-сервера разработки, настройте файл, чтобы задать переменные среды прокси-сервера и отключить проверку TLS/SSL-сертификата.
Файл: VSCODE/launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug with Dev Proxy",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/index.js",
"env": {
"NODE_ENV": "development",
"http_proxy": "http://127.0.0.1:8000",
"https_proxy": "http://127.0.0.1:8000",
"GLOBAL_AGENT_HTTP_PROXY": "http://127.0.0.1:8000",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
]
}
Это важно
Параметр отключает проверку TLS/SSL-сертификата. Используйте этот параметр только во время разработки. Для обеспечения более безопасного подхода используйте средство для доверия сертификату Dev Proxy напрямую:
macOS/Linux:
"NODE_EXTRA_CA_CERTS": "${env:HOME}/.devproxy/rootCert.pem"
#REF!:
"NODE_EXTRA_CA_CERTS": "${env:USERPROFILE}\\.devproxy\\rootCert.pem"
Переменная используется пакетом , который обеспечивает поддержку прокси-сервера для многих Node.js библиотек HTTP. Дополнительные сведения о настройке различных библиотек HTTP см. в статье "Использование прокси-сервера разработки" с Node.js приложениями.
.NET
.NET приложения автоматически используют параметры системного прокси-сервера. Для отладки приложения .NET с помощью прокси-сервера разработки обычно не требуется устанавливать переменные среды. Создайте базовую конфигурацию отладки:
Файл: VSCODE/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug with Dev Proxy",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/net8.0/MyApp.dll",
"args": [],
"cwd": "${workspaceFolder}",
"console": "internalConsole",
"stopAtEntry": false
}
]
}
Если приложение не выбирает системный прокси-сервер, явно задайте переменные среды прокси-сервера:
Файл: VSCODE/launch.json (с явными параметрами прокси-сервера)
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug with Dev Proxy",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/net8.0/MyApp.dll",
"args": [],
"cwd": "${workspaceFolder}",
"console": "internalConsole",
"stopAtEntry": false,
"env": {
"http_proxy": "http://127.0.0.1:8000",
"https_proxy": "http://127.0.0.1:8000"
}
}
]
}
Подсказка
В #REF! и macOS .NET автоматически доверяет сертификату прокси-сервера разработки, если он установлен в качестве доверенного корневого сертификата во время установки прокси-сервера Dev Proxy. В Linux может потребоваться доверять сертификату вручную. См. документацию вашего дистрибутива для настройки доверенных сертификатов.
Python
Чтобы выполнить отладку приложения Python с помощью прокси-сервера разработки, настройте файл launch.json для задания переменных среды прокси-сервера. Конфигурация зависит от того, используется ли библиотека или другие библиотеки HTTP.
Файл: VSCODE/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug with Dev Proxy",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/main.py",
"console": "integratedTerminal",
"env": {
"HTTP_PROXY": "http://127.0.0.1:8000",
"HTTPS_PROXY": "http://127.0.0.1:8000",
"REQUESTS_CA_BUNDLE": ""
}
}
]
}
Это важно
Если задана пустая строка, библиотека пропускает проверку TLS/SSL-сертификата. Используйте этот параметр только во время разработки.
Для более безопасного подхода укажите сертификат прокси-сервера разработки:
macOS/Linux:
"REQUESTS_CA_BUNDLE": "${env:HOME}/.devproxy/rootCert.pem"
#REF!:
"REQUESTS_CA_BUNDLE": "${env:USERPROFILE}\\.devproxy\\rootCert.pem"
Если вы используете библиотеку , настройте проверку TLS/SSL с помощью переменной среды.
{
"env": {
"HTTP_PROXY": "http://127.0.0.1:8000",
"HTTPS_PROXY": "http://127.0.0.1:8000",
"TLS/SSL_CERT_FILE": "${env:HOME}/.devproxy/rootCert.pem"
}
}
Настройка прокси-сервера разработки для имитации ошибок
Чтобы отладить обработку ошибок, настройте прокси-сервер разработки для возврата определенных ошибок при вызове API приложения. Используйте GenericRandomErrorPlugin для имитации ошибок, например или .
Имитация ошибки 429 (слишком много запросов)
Создайте файл конфигурации прокси для разработки, который имитирует ограничение скорости передачи данных.
Файл: devproxyrc.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "errorsConfig"
}
],
"urlsToWatch": [
"https://api.contoso.com/*"
],
"rate": 100,
"errorsConfig": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.schema.json",
"errorsFile": "errors.json"
}
}
Создайте файл ошибок с определенными ответами на ошибки:
Файл: errors.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.errorsfile.schema.json",
"errors": [
{
"request": {
"url": "https://api.contoso.com/*"
},
"responses": [
{
"statusCode": 429,
"headers": [
{
"name": "content-type",
"value": "application/json"
},
{
"name": "Retry-After",
"value": "60"
}
],
"body": {
"error": {
"code": "TooManyRequests",
"message": "Rate limit exceeded. Retry after 60 seconds."
}
}
}
]
}
]
}
Подсказка
Установите <параметр> в <значение>, чтобы каждый запрос завершался сбоем и вы всегда попадали в код обработки ошибок во время отладки. Уменьшите частоту, когда требуется проверить периодические ошибки.
Имитация ошибки 500 (внутренняя ошибка сервера)
Чтобы имитировать ошибки сервера, добавьте другой ответ на ошибку:
Файл: errors.json (несколько ошибок)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.errorsfile.schema.json",
"errors": [
{
"request": {
"url": "https://api.contoso.com/*"
},
"responses": [
{
"statusCode": 429,
"headers": [
{
"name": "content-type",
"value": "application/json"
},
{
"name": "Retry-After",
"value": "60"
}
],
"body": {
"error": {
"code": "TooManyRequests",
"message": "Rate limit exceeded. Retry after 60 seconds."
}
}
},
{
"statusCode": 500,
"headers": [
{
"name": "content-type",
"value": "application/json"
}
],
"body": {
"error": {
"code": "InternalServerError",
"message": "An unexpected error occurred."
}
}
}
]
}
]
}
Когда вы определяете несколько ответов на ошибки, прокси-сервер Dev случайным образом выбирает один для каждого перехваченного запроса.
Отладка кода обработки ошибок
Настроив VS Code и Dev Proxy, теперь можно выполнить отладку кода обработки ошибок.
Шаг 1. Установка точек останова
Откройте исходный код и задайте точки останова в коде обработки ошибок. Например, в приложении Node.js:
async function fetchData() {
try {
const response = await fetch('https://api.contoso.com/data');
if (!response.ok) {
// Set a breakpoint here to debug error responses
throw new Error(`HTTP error: ${response.status}`);
}
return await response.json();
} catch (error) {
// Set a breakpoint here to debug exceptions
console.error('Failed to fetch data:', error);
throw error;
}
}
Шаг 2. Запуск прокси-сервера разработки
Запустите прокси-сервер разработки с файлом конфигурации:
devproxy --config-file devproxyrc.json
Шаг 3. Начало отладки в VS Code
- Откройте VS Code
- Нажмите клавишу F5 или выберите запуск отладки
- Когда ваше приложение делает вызов API, Dev Proxy перехватывает его и возвращает ошибку.
- VS Code приостанавливается в точке останова
- Использование элементов управления отладки для пошагового выполнения кода и проверки переменных
Шаг 4. Проверка ошибки
Когда VS Code приостанавливается в точке останова, используйте панель отладки, чтобы:
- Просмотр кода состояния ответа об ошибке и сообщения
- Проверка значений локальных переменных
- Шаг за шагом выполните логику повторных попыток
- Убедитесь, что сообщения об ошибках удобны для пользователя
Автоматический запуск и остановка прокси-сервера разработки
Чтобы упростить рабочий процесс отладки, настройте VS Code для автоматического запуска прокси разработки при запуске отладки и его остановке при завершении. Установите расширение Набора средств Dev Proxy и настройте задачи.
Файл: VSCODE/tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "devproxy-start",
"type": "devproxy",
"command": "start",
"args": [
"--config-file",
"devproxyrc.json"
],
"isBackground": true,
"problemMatcher": "$devproxy-watch"
},
{
"label": "devproxy-stop",
"type": "devproxy",
"command": "stop"
}
]
}
Чтобы использовать эти задачи, обновите следующее :
Файл: VSCODE/launch.json (Node.js с автозапуском)
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug with Dev Proxy",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/index.js",
"preLaunchTask": "devproxy-start",
"postDebugTask": "devproxy-stop",
"env": {
"NODE_ENV": "development",
"http_proxy": "http://127.0.0.1:8000",
"https_proxy": "http://127.0.0.1:8000",
"GLOBAL_AGENT_HTTP_PROXY": "http://127.0.0.1:8000",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
]
}
Советы по эффективной отладке
- Чтобы стабильно достигать точек останова, установите в конфигурации Dev Proxy параметр, чтобы каждый запрос завершался сбоем.
- Чтобы понять, как код обрабатывает определенную ошибку, используйте один ответ на ошибку при отладке.
- Чтобы убедиться, что ваш код соблюдает ограничения, проверьте, что он считывает и следует заголовку 429 при отладке ошибок 429.
- Чтобы убедиться, что код обрабатывает необычные ответы корректно, используйте прокси разработки для имитации пограничных вариантов, таких как неправильно сформированный JSON или отсутствующие заголовки.
- Чтобы останавливаться только на определённых ошибках, используйте условные точки останова в VS Code, щелкните правой кнопкой мыши по точке останова и добавьте условие, например .
См. также
- Используйте "Dev Proxy" с конфигурациями отладки Visual Studio Code — автоматический запуск прокси разработки в VS Code
- Протестируйте мое приложение со случайными ошибками — имитация случайных ошибок API
- Изменение частоты сбоев запросов — настройте частоту возникновения ошибок
- Использование прокси-сервера разработки с приложениями Node.js — конфигурация прокси-сервера Node.js
- Используйте Dev Proxy с .NET приложениями — конфигурация прокси-сервера .NET