File tree 4 files changed +91
-0
lines changed
sample/sample17-controllers-inheritance
4 files changed +91
-0
lines changed Original file line number Diff line number Diff line change
1
+ import "reflect-metadata" ;
2
+ import * as express from "express" ;
3
+ import { useExpressServer } from "../../src/index" ;
4
+
5
+ let app = express ( ) ; // create express server
6
+ useExpressServer ( app , {
7
+ controllers : [ __dirname + "/controllers/*{.js,.ts}" ] // register controllers routes in our express app
8
+ } ) ;
9
+ app . listen ( 3001 ) ; // run express app
10
+
11
+ console . log ( "Express server is running on port 3001. Open http://localhost:3001/blogs/ or http://localhost:3002/posts/" ) ;
Original file line number Diff line number Diff line change
1
+ import { Request } from "express" ;
2
+ import { Get } from "../../../src/decorator/Get" ;
3
+ import { Req } from "../../../src/index" ;
4
+ import { Post } from "../../../src/decorator/Post" ;
5
+ import { Put } from "../../../src/decorator/Put" ;
6
+ import { Patch } from "../../../src/decorator/Patch" ;
7
+ import { Delete } from "../../../src/decorator/Delete" ;
8
+
9
+ export class BaseControllerClass {
10
+ name : string ;
11
+ constructor ( name : string ) {
12
+ this . name = name ;
13
+ }
14
+
15
+ @Get ( )
16
+ getAll ( ) {
17
+ return [
18
+ { id : 1 , name : `First ${ this . name } !` } ,
19
+ { id : 2 , name : `Second ${ this . name } !` }
20
+ ] ;
21
+ }
22
+
23
+ @Get ( "/:id" )
24
+ getOne ( ) {
25
+ return { id : 1 , name : `First ${ this . name } !` } ;
26
+ }
27
+
28
+ @Post ( "" )
29
+ post ( @Req ( ) request : Request ) {
30
+ let entity = JSON . stringify ( request . body ) ;
31
+ return `${ this . name } ${ entity } !saved!` ;
32
+ }
33
+
34
+ @Put ( "/:id" )
35
+ put ( @Req ( ) request : Request ) {
36
+ return `${ this . name } # ${ request . params . id } has been putted!` ;
37
+ }
38
+
39
+ @Patch ( "/:id" )
40
+ patch ( @Req ( ) request : Request ) {
41
+ return `${ this . name } # ${ request . params . id } has been patched!` ;
42
+ }
43
+
44
+ @Delete ( "/:id" )
45
+ remove ( @Req ( ) request : Request ) {
46
+ return `${ this . name } # ${ request . params . id } has been removed!` ;
47
+ }
48
+ }
49
+
50
+ export function BaseController ( name : string ) : { new ( ) : BaseControllerClass } {
51
+ return class extends BaseControllerClass {
52
+ constructor ( ) {
53
+ super ( name ) ;
54
+ }
55
+ } ;
56
+ }
Original file line number Diff line number Diff line change
1
+ import { JsonController } from "../../../src/decorator/JsonController" ;
2
+ import { BaseController , BaseControllerClass } from "./BaseController" ;
3
+ import { Get } from "../../../src/decorator/Get" ;
4
+
5
+ @JsonController ( "/blogs" )
6
+ export class BlogController extends BaseController ( "blog" ) {
7
+ constructor ( ) {
8
+ super ( ) ;
9
+ }
10
+
11
+ @Get ( )
12
+ getAll ( ) {
13
+ return [
14
+ { id : 1 , name : `First ${ this . name } !` } ,
15
+ { id : 2 , name : `Second ${ this . name } !` } ,
16
+ { id : 3 , name : `Third ${ this . name } !` }
17
+ ] ;
18
+ }
19
+ }
Original file line number Diff line number Diff line change
1
+ import { JsonController } from "../../../src/decorator/JsonController" ;
2
+ import { BaseController , BaseControllerClass } from "./BaseController" ;
3
+
4
+ @JsonController ( "/posts" )
5
+ export class PostController extends BaseController ( "post" ) { }
You can’t perform that action at this time.
0 commit comments