Маршрутизация веб-приложений

Путь расположения

Путь в сборочном каталоге

/era_env/priv/metadata/url_routes.json

Обзор

Маршрутизация для HTTP обращений к веб-серверу.

Применяется в дополнение к дескриптору веб-сервера системы, организуя автоматические переадресации и подстановки при обращении к определенным страницам.

Например, обращение на /scripteditor переадресовывается на /scripteditor/. А тот в свою очередь подставляет содержимое /scripteditor/index.html без переадресации.

Ожидается, что в url_routes.json будут указаны страницы переадресации и подстановки всех входящих в состав дистрибутива системных веб-приложений.

Формат:
[
  {
    "url": str,
    "type": "redirect" | "static" | "static_dir_with_404",
    "to": str,
    "code": int,
    "dir": str
  },
  ...
]
Table 1. Поля
Поле Описание

"url"

подлежащий маршрутизации относительно-корневой URL. Поддерживает wildcard (*) для указания остатка пути.

"type"

режим маршрутизации:

  • "redirect" – возвращает HTTP ответ 3xx, конкретный код указывается в поле "code";

  • "static" – выдает конкретный ресурс, расположенный по URL в поле "to";

  • "static_dir_with_404" – производит поиск ресурса в указанном каталоге (поле "dir") и выдает его. А при его отсутствии выдает ресурс, расположенный по URL в поле "to". Используется совместно с wildcard (*) в поле "url".

"to"

новый URL, по которому доступен ресурс.

"code"

(для type = redirect) код ответа HTTP, с которым производится переадресация.

"dir"

(для type = static_dir_with_404) каталог, в котором производится поиск произвольного ресурса.

Пример

Пример:
[
  { "url": "/",          "type": "static",   "to": "/index.html" },
  { "url": "/login",     "type": "static",   "to": "/index.html" },

  { "url": "/doc",       "type": "redirect", "to": "/doc/", "code": 301 },
  { "url": "/doc/",      "type": "static",   "to": "/doc/index.html" },

  { "url": "/selector",  "type": "redirect", "to": "/selector/", "code": 301 },
  { "url": "/selector/", "type": "static",   "to": "/selector_dist/index.html" },
  {
    "url": "/selector/*",
    "type": "static_dir_with_404",
    "to": "/selector_dist/index.html",
    "dir": "/selector_dist/"
  },

  { "url": "/scripteditor",  "type": "redirect", "to": "/scripteditor/", "code": 301 },
  { "url": "/scripteditor/", "type": "static",   "to": "/scripteditor/index.html" },

  { "url": "/webphone",      "type": "redirect", "to": "/webphone/", "code": 301 },
  { "url": "/webphone/",     "type": "static",   "to": "/webphone/index.html" }
]