actionhero
Version:
The reusable, scalable, and quick node.js API server for stateless and stateful applications
36 lines (34 loc) • 1.38 kB
text/typescript
import { api } from "./../index";
export namespace route {
/**
* Programmatically define a route, rather than using `config.routes`. This is useful for plugins which may define routes as well.
* You can use both `routes.registerRoute` and `config.routes` in the same project.
*
* * method: HTTP verb (get, put, etc)
* * path: The route in question. Can use variables.
* * action: The action to call with this route.
* * apiVersion: The version of the action to call, if more than one.
* * matchTrailingPathParts: Allows the final segment of your route to absorb all trailing path parts in a matched variable. (ie: /api/user would match /api/user/123)
* * dir: Which folder to serve static files from (must by included in config.general.paths)
*/
export function registerRoute(
method: string,
path: string,
action: string,
apiVersion?: number,
matchTrailingPathParts: boolean = false,
dir?: string
) {
const verbs = method === "all" ? api.routes.verbs : [method];
for (const vi in verbs) {
const verb = verbs[vi];
api.routes.routes[verb].push({
path: path,
matchTrailingPathParts: matchTrailingPathParts,
action: action,
dir: dir,
apiVersion: apiVersion,
});
}
}
}