This module contains a Routing capability that extends request processing context with request routing means.
The latter has the following properties:
fullRouteoriginal route.routematching route. E.g. a tail section of original route.routeMatcha successful match of the route(s) against the pattern(s).
The @hatsy/route-match library performs route parsing and matching.
Once Routing capability applied the request processing can be dispatched by matching route by one of the dispatchers.
import{httpListener}from'@hatsy/hatsy';import{dispatchByName,Routing}from'@hatsy/router';import{createServer}from'http';constserver=createServer(httpListener(Routing.for(dispatchByName({api: apiHandler,// Handle API request under `/api` routeassets: assetsHandler,// Serve static assets under `/assets` route}),),),);server.listen(8080);dispatchByName() function accepts a map of request processing handlers under route entry names the handler should
serve. The handler receives a request processing context with the rest of the route.
import{httpListener}from'@hatsy/hatsy';import{dispatchByPattern,Routing}from'@hatsy/router';import{createServer}from'http';constserver=createServer(httpListener(Routing.for(dispatchByPattern([{on: 'api/v{apiVersion}/**',to: apiHandler},{on: '**/*.html',to: pageHandler},{on: 'assets/**',to: assetsHandler},]),),),);server.listen(8080);dispatchByPattern() function accepts dispatch patterns containing a route pattern and handler that serves
the matching route. The handler receives a request processing context with matching route tail.
The route format is URLRoute by default, while route patterns parsed by simpleRoutePattern().
This can be changed by configuring Routing capability.
import{httpListener}from'@hatsy/hatsy';import{matrixRoute,matrixRoutePattern}from'@hatsy/route-match';import{dispatchByPattern,Routing}from'@hatsy/router';import{createServer}from'http';import{matrixRoute}from'./matrix-route';constserver=createServer(httpListener(Routing.with({buildRoute: ({requestAddresses: { url }})=>matrixRoute(url),routePattern: pattern=>matrixRoutePattern(pattern),}).for(dispatchByPattern([{on: 'api;v/**',to: apiHandler},// API version as matrix attribute{on: '**/*.html',to: pageHandler},{on: 'assets/**',to: assetsHandler},]),),),);server.listen(8080);