Global middleware
Global middlewares and Endpoint middlewares are almost similar but Global middleware cannot use the @EndpointInfo
decorator.
Global middlewares lets you manage request and response on ServerLoader
.
Create your middleware:
import {IMiddleware, Middleware, Request, ServerSettingsService} from "@tsed/common";
import {NotAcceptable} from "ts-httpexceptions";
@Middleware()
export default class GlobalAcceptMimesMiddleware implements IMiddleware {
constructor(private serverSettingsService: ServerSettingsService) {
}
use(@Request() request) {
this.serverSettingsService.acceptMimes
.forEach((mime) => {
if (!request.accepts(mime)) {
throw new NotAcceptable(mime);
}
});
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Then, add your middleware in ServerLoader
:
@ServerSettings({
rootDir,
mount: {
'/rest': `${rootDir}/controllers/**/**.js`
},
componentsScan: [
`${rootDir}/services/**/**.js`,
`${rootDir}/middlewares/**/**.js`
],
acceptMimes: ['application/json'] // add your custom configuration here
})
export class Server extends ServerLoader {
$onMountingMiddlewares() {
this.use(GlobalAcceptMimeMiddleware);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16