D'une manière générale, le serveur doit avoir des réponses différentes pour différentes demandes d'URL. Nous devons fournir l'URL demandée et les autres paramètres GET et POST requis pour l'itinéraire, puis l'itinéraire doit exécuter le code correspondant en fonction de ces données. Toutes les données dont nous avons besoin sont incluses dans l'objet de demande, qui est passé comme le premier paramètre de la fonction de rappel OnRequest (). Afin d'analyser ces données, les modules supplémentaires doivent être appelés, à savoir les modules URL et de requête.
URL: ceci
Le module a des services publics pour la résolution et l'analyse de l'URL. Appel require ('url') pour
Utilisez-le.
Les objets URL analysés ont ou tous les champs suivants, selon qu'ils existent ou non dans la chaîne d'URL. Toutes les pièces qui ne sont pas dans la chaîne d'URL ne seront pas dans l'objet analysé. Des exemples sont indiqués pour l'URL
'http: // utilisateur: [email protected]: 8080 / p / a / t / h? query = string # hash'
HREF: L'URL complète qui a été à l'origine analysée. Le protocole et l'hôte sont tous deux classés.
Exemple: 'http: // utilisateur: [email protected]: 8080 / p / a / t / h? Query = string # hash'
Protocole: le protocole de demande, classé inférieur.
Exemple: 'http:'
Hôte: la partie hôte complète de l'URL, y compris les informations du port.
Exemple: 'host.com:8080'
AUTH: La partie d'informations d'authentification d'une URL.
Exemple: «Utilisateur: passer»
Nom d'hôte: juste la partie du nom d'hôte classé inférieur de l'hôte.
Exemple: 'host.com'
Port: la partie numéro de port de l'hôte.
Exemple: '8080'
PathName: la section Chemin de l'URL, qui vient après l'hôte et avant la requête, y compris la barre oblique initiale si elle est présente.
Exemple: '/ p / a / t / h'
Recherche: la partie «String de requête» de l'URL, y compris le principal point d'interrogation.
Exemple: '? Query = String'
Chemin: Concaténation de PathName et Search.
Exemple: '/ p / a / t / h? Query = String'
requête: soit la partie «params» de la chaîne de requête, soit un objet à requête à requête.
Exemple: 'query = String' ou {'Query': 'String'}
Hash: la partie «fragment» de l'URL, y compris le signe de livre.
Exemple: '#hash'
Nous utiliserons l'injection de dépendance pour ajouter le module de routage plus librement. La fonction qui est la cible de routage est appelée gestionnaire de demandes. La mise en œuvre du gestionnaire de demandes nécessite de créer un module appelé requestHandlers, qui peut bien sûr être nommé autre. Et pour chaque gestionnaire de demande, ajoutez une fonction d'espace réservé, puis exportez ces fonctions comme méthodes de module, afin que le gestionnaire de requête et le module de routage puissent être connectés à l'itinéraire, afin que l'itinéraire puisse être suivi.
Il est particulièrement noté qu'une série de gestionnaires de demandes doit être transmise par un objet ici, et l'objet doit être injecté dans la fonction Route () en utilisant une méthode lâche.
Nous pouvons obtenir la fonction de traitement de la demande de l'objet passé de la même manière que d'obtenir des éléments du tableau associatif, nous avons donc une expression concise et lisse comme la poignée [pathname] ();. Le code ressemble à ceci:
var handle = {} manche ["/"] = requestHandlers.start; manche ["/ start"] = requestHandlers.start; manche ["/ upload"] = requestHandlers.upload;