Вообще говоря, сервер должен иметь разные ответы для различных запросов URL. Нам необходимо предоставить запрошенный URL -адрес и другие необходимые параметры Get и Pup для маршрута, а затем маршрут должен выполнить соответствующий код на основе этих данных. Все необходимые данные включены в объект запроса, который передается как первый параметр функции обратного вызова OnRequest (). Чтобы проанализировать эти данные, необходимо вызвать дополнительные модули, а именно модули URL и запроса.
URL: это
Модуль имеет утилиты для разрешения URL и анализа. Звонок требуется ('url') к
Используйте его.
Проанализированные объекты URL имеют некоторые или все из следующих полей, в зависимости от того, существуют ли они в строке URL. Любые детали, которых нет в строке URL, не будут в аналитическом объекте. Примеры показаны для URL
'http: // user: [email protected]: 8080/p/a/t/h? Query = string#hash'
Href: полный URL, который был изначально проанализирован. Как протокол, так и хост имеют более низкую.
Пример: 'http: // user: [email protected]: 8080/p/a/t/h? Query = string#hash'
Протокол: протокол запроса, основан на более низком уровне.
Пример: 'http:'
Хост: Полная часть URL -карты с более низким содержанием, включая информацию о порте.
Пример: host.com:8080 '
Auth: информационная часть аутентификации URL.
Пример: «Пользователь: пройти»
Имя хоста: только нижняя часть хоста -имени хоста.
Пример: 'host.com'
Порт: номер порта хоста.
Пример: '8080'
Pathname: раздел Path URL, который поступает после хоста и перед запросом, включая начальную черту, если она присутствует.
Пример: '/p/a/t/h'
Поиск: часть URL -адреса «Строка запроса», включая ведущий знак вопроса.
Пример: '? Query = String'
Путь: Соединение пути и поиск.
Пример: '/p/a/t/h? Query = String'
Запрос: либо часть «параметров» строки запроса, либо объект, проведенный на запросе.
Пример: 'Query = String' или {'Query': 'String'}
Хэш: «Фрагмент» часть URL-адреса, включая знаком.
Пример: '#hash'
Мы будем использовать инъекцию зависимостей, чтобы добавить модуль маршрутизации более свободно. Функция, которая является целью маршрутизации, называется обработчиком запроса. Реализация обработчика запроса требует создания модуля под названием requestHandlers, который, конечно, может быть назван другим. И для каждого обработчика запроса добавьте функцию заполнителя, а затем экспортируйте эти функции в качестве методов модуля, чтобы обработчик запроса и модуль маршрутизации можно было подключить к маршруту, чтобы маршрут можно было выполнить.
Особенно отмечено, что здесь необходимо пропустить серию обработчиков запроса, и объект должен быть введен в функцию route (), используя слабо связанный метод.
Мы можем получить функцию обработки запроса от пропущенного объекта так же, как и получение элементов из ассоциативного массива, поэтому у нас есть краткое и плавное выражение, например, ручка [pathname] ();. Код выглядит так:
var harder = {} handle ["/"] = requestHandlers.start; harder ["/start"] = requestHandlers.start; handle ["/upload"] = requestHandlers.upload;