Override Send response
There is the current implementation of the SendResponseMiddleware:
@Middleware()
export class SendResponseMiddleware implements IMiddleware {
constructor(private converterService: ConverterService) {
}
public use(@ResponseData() data: any, @Response() response: Express.Response) {
if (response.headersSent) {
return;
}
const type = typeof data;
if (data === undefined) {
response.send("");
} else if (data === null || ["number", "boolean", "string"].indexOf(type) > -1) {
response.send(String(data));
} else {
response.setHeader("Content-Type", "text/json");
response.json(this.converterService.serialize(data));
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
But for some reason, this implementation isn't enough to meet your needs.
With @OverrideMiddleware it's possible to change the default implementation like this:
@OverrideMiddleware(SendResponseMiddleware)
export class MySendResponseMiddleware extends SendResponseMiddleware {
constructor(protected converterService: ConverterService) {
super(converterService)
}
public use(@ResponseData() data: any, @Response() response: Express.Response) {
// ... your instruction
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
And that all!