Эгг-апигв-трейсер
Адаптация HTTP-запросов API-шлюза для Egg.js.
Введение
При предоставлении внешних веб-сервисов иногда возникают случайные ошибки в рабочей среде. Для облегчения поиска проблемы удобно предоставлять уникальный идентификатор запроса для каждого запроса. Разработчики могут использовать этот идентификатор для поиска соответствующей информации об ошибке в соответствующем журнале.
Этот «уникальный идентификатор запроса» (Unique Request ID) иногда также называют «идентификатором трассировки» (trace ID). Простой способ — использовать UUID для создания строки и включить эту строку в ответ. Некоторые веб-сервисы используют облачные шлюзы API в качестве уровня доступа, а затем перенаправляют запросы на сервер разработчика. В этом случае мы обычно хотим использовать идентификатор запроса, предоставленный шлюзом API, в качестве идентификатора трассировки. Этот плагин был создан для решения этой проблемы.
Плагин идеально адаптирован к Egg.js и может использоваться без какой-либо конфигурации.
Установка
Используйте npm для загрузки и установки в свой проект:
npm i egg-apigw-tracer
Использование
Перед использованием убедитесь, что вы ознакомились с документацией Egg.js о плагинах.
Далее описывается, как настроить и использовать плагин.
Включение плагина В файле config/plugin.js объявите включение плагина:
exports.tracer = {
// enable — атрибут, указывающий, включён ли плагин, true — включён, false — выключен
enable: true,
// Указывает пакет плагина, 'egg-apigw-tracer'
package: 'egg-apigw-tracer',
};
Конфигурация Плагину не требуется конфигурация. Однако рассмотрим следующий сценарий использования:
Шлюз API используется в производственной среде для доступа к сети, и идентификатор запроса шлюза API используется в качестве идентификатора отслеживания. Но в локальной среде разработки нет этого уровня доступа. Чтобы сохранить согласованность функций, также необходим аналогичный идентификатор отслеживания. Поэтому UUID используется в качестве идентификатора отслеживания.
Настройте плагин в файле config/config.${env}.js (следующее является конфигурацией по умолчанию):
exports.tracer = {
mode: 'apigw',
idHeaders: 'x-ca-request-id',
}
Свойство | Тип | Значение по умолчанию | Требуется | Описание |
---|---|---|---|---|
mode | string | 'apigw' | Нет | Режим, используйте 'apigw', чтобы указать, что есть уровень доступа шлюза API, используйте 'uuid', чтобы использовать uuid для генерации идентификатора отслеживания |
idHeaders | string | 'x-ca-request-id' | Нет | Применяется только тогда, когда режим установлен на 'apigw'. Указывает, что идентификатор запроса извлекается из указанного заголовка запроса и используется в качестве идентификатора отслеживания |
Использование Есть два основных способа использования: один — напрямую через ctx.traceId для получения идентификатора отслеживания, другой — при использовании ctx.logger для печати журнала, фреймворк автоматически добавит префикс идентификатора отслеживания перед журналом, формат префикса: [$userId/$ip/$traceId/${cost}ms $method $url] . Подробности см. в документации.
Пример
Мы имитируем следующий сценарий использования, чтобы продемонстрировать, как настраивать и использовать этот плагин:
Шлюз API Alibaba Cloud используется в рабочей среде для доступа в Интернет, и этот уровень доступа не используется в среде локальной разработки.
В файле config/plugin.js объявлено включение плагина:
exports.tracer = {
enable: true,
package: 'egg-apigw-tracer',
};
Настройте содержимое файла config.local.js следующим образом:
exports.tracer = {
mode: 'uuid',
}
Содержимое файла config.prod.js настроено следующим образом:
exports.tracer = {
mode: 'apigw',
}
Связанные
Автор
Я inlym, менеджер по продукту и разработчик полного стека.
Если у вас есть какие-либо вопросы или предложения, пожалуйста, свяжитесь со мной. Вот мои контактные данные:
— Электронная почта: inlym@qq.com — Домашняя страница: www.inlym.com
Участие
Приглашаем вас принять участие в разработке и обслуживании этого проекта.
Вы можете участвовать в проекте следующими способами:
Лицензия
Этот плагин использует лицензию MIT.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )