Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Завершается сбоем запросов со случайной выбранной ошибкой из файла, содержащего измеченные ошибки.
Пример конфигурации
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "genericRandomErrorPlugin"
}
],
"urlsToWatch": [
"https://api.openai.com/*"
],
"genericRandomErrorPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/genericrandomerrorplugin.schema.json",
"errorsFile": "errors.json"
}
}
Свойства конфигурации
| Свойство | Описание | По умолчанию |
|---|---|---|
errorsFile |
Путь к файлу, который содержит ответы на ошибки. | errors.json |
rate |
Процент запросов на сбой со случайной ошибкой. Значение от 0 до 100. | 50 |
retryAfterInSeconds |
Количество секунд, ожидающих повторных попыток запроса. Включен в заголовок ответа Retry-After для динамического регулирования. |
5 |
Параметры командной строки
| Имя | Описание | По умолчанию |
|---|---|---|
-f, --failure-rate <failure rate> |
Процент запросов на сбой со случайной ошибкой. Значение от 0 до 100. | 50 |
Замечания
Содержимое ответа
Если вы задаете body свойство ответа на ошибку для объекта JSON или массива, прокси-сервер разработки сериализует его в JSON. Если он задан в строке, прокси-сервер разработки отправляет строку as-isбез окружающих кавычек. Строка, которая начинается с @ , рассматривается как путь к файлу относительно файла ошибок с текстом ответа. Так как прокси-сервер разработки по умолчанию использует Content-Type заголовок, задайте Content-Type для заголовка application/jsonсоответствующее содержимое при возврате содержимого, отличного от JSON, напримерtext/plain.
Значения для ответа Retry-After
Прокси-сервер разработки @dynamic разрешается в заголовке Retry-After для любого кода состояния, например 429, 503или 529. Он соответствует имени заголовка независимо от регистра. При разрешении @dynamicзапрос также регистрируется в RetryAfterPlugin, который сообщает, что приложение отправляет запрос до Retry-After истечения времени.
По умолчанию Retry-After заголовок использует глобальное retryAfterInSeconds значение. Это значение можно переопределить на основе каждого ответа с помощью @dynamic=N синтаксиса в файле ответов об ошибках, где N количество секунд, которое нужно ожидать перед повторным повтором.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/genericrandomerrorplugin.errorsfile.schema.json",
"errors": [
{
"request": {
"url": "https://api.openai.com/*"
},
"responses": [
{
"statusCode": 429,
"headers": [
{
"name": "Retry-After",
"value": "@dynamic=17"
}
],
"body": {
"error": {
"message": "Rate limit exceeded. Wait 17 seconds."
}
}
}
]
}
]
}
В этом примере Retry-After заголовок использует 17 секунды для этого ответа независимо от глобального retryAfterInSeconds параметра. Значение увеличивается для каждого последующего регулирования запроса, как и с обычным @dynamic маркером.
Заголовок по умолчанию Content-Type
Если ответ на ошибку имеет body заголовок и не определяет Content-Type заголовок, служба Dev Proxy возвращает ответ с заголовком Content-Type: application/json . Чтобы вернуть другой тип контента, добавьте Content-Type заголовок в ответ в файле ошибок. В прокси-сервере разработки используется указанное значение.