Используйте Egg.js для создания простого API-шлюза.

Egg.js

Что дает шлюз?

  1. Единый вход
  2. обратный прокси
  3. веб сервер
  4. Перехват интерфейса

Это мои потребности, в соответствии с проектом достигнута функциональность, последующая деятельность может быть расширена несколькими другими функциями:Серый выпускЖдать.

задний план

Чтобы предотвратить междоменное взаимодействие в среде разработки, в веб-пакет будет добавлена ​​конфигурация proxyTable, которая действует только в среде разработки. Подождите, пока производственная среда запустится отдельно.ExpressСервис предоставляет статические веб-ресурсы и proxyTable.

Иными словами, каждое приложение будет иметь службу Express.Когда приложений слишком много, это не способствует управлению и затрудняет развертывание.

Как мне добиться

промежуточное программное обеспечение для сервиса яиц

cors Middleware

egg-corsПлагин имеет встроенное промежуточное ПО, которое используется для поддержки обработки междоменных запросов.

static Middleware

egg-staticПлагин имеет встроенное промежуточное ПО, которое используется для предоставления статических ресурсов внешнему миру.

multiApplicationStatic Middleware

egg-multi-application-staticСопоставьте различные пути к статическим ресурсам для нескольких приложений. использоватьkoa-staticРеализация плагина и будет упакована как плагин

  • префикс доменного имени
  • dir статический путь входа

Анализ исходного кода

  1. Элементы конфигурации хода

  2. Выньте исходное доменное имя и сравните префикс элемента конфигурации

    Удовлетворение: извлеките каталог элемента конфигурации, чтобы сгенерировать промежуточное программное обеспечение, предоставляющее службы статических ресурсов, и вернуть его.

    Не удовлетворено: вернуться к следующему()

  3. Используйте функцию инструмента компоновки, чтобы сформировать вызов луковичного кольца и вернуться

bodyParser Middleware

Параметры в теле запроса будут проанализированы и добавлены в объект запроса,当经过该插件解析后的请求再做proxy时可能会丢失post参数, так вот过滤один раз:

Если путь доступа маршрутизируется самим шлюзом, разрешите его, в противном случае пропустите

需要注意该中间件的顺序,当post请求被该中间件处理后,再做proxy可能会丢失参数

securities Middleware

egg-securityПредотвращение и обработка XSS (межсайтовых сценариев).

permissions Middleware

Проверьте токен и обновите его.

Анализ исходного кода

  • имеет токен
    1. Убедитесь, что токен действителен, если он недействителен, верните 401
    2. Путь запроса/gateway/loginили/Напрямую跳回refererSадрес или подскажите已登录,refererS不存在
    3. Обновить время действия cookie.refererS
    4. Обновить время действия cookie.token
  • нет токена
    1. Зарегистрирован ли исходный домен, если нет, он вернет 401Application not register!
    2. Путь запроса/gateway/login
    3. Request path not authorized!
  • Если вышеуказанный процесс не имеет возврата, верните функцию next()

proxy Middleware

противconfig.proxyИмя домена и путь, настроенные в обратном прокси-сервере.

Сначала определяет, является ли Configning Config домена исходного кода .proxy, если условие выполняется в конфигурации домена, с помощьюhttp-proxy-middleware,koa-connectПлагины для проксирования и ответа.

Процесс разбора запроса

  1. Введите промежуточное ПО multiApplicationStatic, чтобы определить, является ли он статическим ресурсом.
  2. Войдите в промежуточное ПО разрешений, чтобы проверить, является ли токен законным.
  3. Войдите в промежуточное ПО прокси и перенаправьте запрос в соответствии с конфигурацией config.
  4. Передано яйце-маршрутизатору

PS

Папа, пожалуйста, распыли, Из примечания вы можете это понять.