use method
Register middleware(s) or apply a router
We can use it like this.
app.use(middleware); // single
app.use([ middleware1, middleware2 ]); // multiple
or with a specified path like this.
app.use('/login', authMiddleware);
app.use('/login', [ middleware1, middleware2 ]);
To use it to apply a router.
app.use(router); // apply the router for root
or
app.use('/api', router); // apply the router for /api
Implementation
App use(path, [middleware]) {
bool isRouter = false;
bool isMiddleware = false;
// if only use 1 parameter (path)
if (middleware == null) {
// use for router, such as
// app.use(router);
if (path is Router) {
isRouter = true;
}
// single middleware, such as
// app.use(middleware);
else if (path is Callback) {
isMiddleware = true;
}
// multiple middlewares, such as
// app.use([ middleware1, middleware2 ]);
else if (path is List && path.isNotEmpty) {
if (path.first is Callback) {
isMiddleware = true;
}
}
}
// if use both parameter with correct path (string)
if (path is String) {
// use for router, such as
// app.use('/api', router);
if (middleware is Router) {
isRouter = true;
}
// single middleware, such as
// app.use('/api', middleware);
else if (middleware is Callback) {
isMiddleware = true;
}
// multiple middlewares, such as
// app.use('/api', [ middleware1, middleware2 ]);
else if (middleware is List && middleware.isNotEmpty) {
if (middleware.first is Callback) {
isMiddleware = true;
}
}
}
if (isRouter) {
return _useRouter(path, middleware);
}
if (isMiddleware) {
return _useMiddleware(path, middleware);
}
return this;
}