En términos generales, el servidor debe tener diferentes respuestas para diferentes solicitudes de URL. Necesitamos proporcionar la URL solicitada y otros parámetros GET y POST requeridos para la ruta, y luego la ruta debe ejecutar el código correspondiente basado en estos datos. Todos los datos que necesitamos se incluyen en el objeto de solicitud, que se pasa como el primer parámetro de la función de devolución de llamada OnRequest (). Para analizar estos datos, se deben llamar a módulos adicionales, a saber, la URL y los módulos de consulta.
URL: esto
El módulo tiene servicios públicos para la resolución y análisis de URL. Llame requiere ('url') a
úsalo.
Los objetos de URL analizados tienen algunos o todos los siguientes campos, dependiendo de si existen o no en la cadena de URL. Cualquier parte que no esté en la cadena de URL no estará en el objeto analizado. Se muestran ejemplos para la URL
'http: // user: [email protected]: 8080/P/A/T/H? Query = String#hash'
HREF: La URL completa que originalmente se analizó. Tanto el protocolo como el huésped están más bajos.
Ejemplo: 'http: // user: [email protected]: 8080/P/A/T/H? Query = String#hash'
Protocolo: el protocolo de solicitud, más bajo.
Ejemplo: 'http:'
Anfitrión: la parte de host de la URL, incluida la información del puerto.
Ejemplo: 'host.com:8080'
Auth: la parte de información de autenticación de una URL.
Ejemplo: 'Usuario: pasar'
Nombre de host: solo la parte del nombre de host del host del host.
Ejemplo: 'host.com'
Puerto: la parte del número de puerto del host.
Ejemplo: '8080'
RathName: la sección de ruta de la URL, que viene después del host y antes de la consulta, incluida la barra inicial si está presente.
Ejemplo: '/P/A/T/H'
Búsqueda: la porción de 'cadena de consulta' de la URL, incluido el signo de interrogación principal.
Ejemplo: '? Query = String'
Ruta: Concatenación de PathName and Search.
Ejemplo: '/P/A/T/H? Query = String'
Consulta: ya sea la porción de 'parámetros' de la cadena de consulta o un objeto apartado de consulta.
Ejemplo: 'Query = String' o {'Query': 'String'}
Hash: La porción de 'fragmento' de la URL, incluido el signo de libra.
Ejemplo: '#hash'
Usaremos la inyección de dependencia para agregar el módulo de enrutamiento más libremente. La función que es el objetivo de enrutamiento se denomina controlador de solicitudes. La implementación del controlador de solicitudes requiere crear un módulo llamado SolicHandlers, que por supuesto puede nombrarse otro. Y para cada controlador de solicitud, agregue una función de marcador de posición y luego exporte estas funciones como métodos de módulo, de modo que el manejador de solicitudes y el módulo de enrutamiento puedan conectarse a la ruta, para que se pueda seguir la ruta.
Se observa particularmente que una serie de manejadores de solicitudes deben pasar a través de un objeto aquí, y el objeto debe inyectarse en la función Route () utilizando un método acoplado libremente.
Podemos obtener la función de manejo de la solicitud del objeto aprobado de la misma manera que obtener elementos de la matriz asociativa, por lo que tenemos una expresión concisa y suave como el mango [rathName] ();. El código se ve así:
var handle = {} handle ["/"] = requestHandlers.start; manejo ["/inicio"] = requestHandlers.start; manejo ["/upload"] = requestHandlers.upload;