File tree Expand file tree Collapse file tree 4 files changed +91
-0
lines changed
sample/sample17-controllers-inheritance Expand file tree Collapse file tree 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