2.2.2 • Published 4 years ago

@softcripto/express v2.2.2

Weekly downloads
-
License
ISC
Repository
bitbucket
Last release
4 years ago

@softcripto/express

Node Express module. Write less code to run server.

TOC

Requirements

  • express 4.16.3
  • node 12
  • typescript 4
  • typedoc

Install

npm install @softcripto/express --save

Usage

Connecting Server

in your server.ts file.

import { Server, Database } from "@softcripto/express";
//LOAD YOUR CONTROLLERS
import "./controllers";

try {
    const database = new Database(
        process.env.DATABASE as string,
        process.env.NODE_ENV as string
    );
    database.connect();
    console.log("Database connected.");
} catch (error) {
    console.log(error);
    process.abort();
}

export = Server.create({
    views: 'views',
    public: 'public',
    enableSession: true,
    sessionSecret: process.env.DATABASE as string
});

Options Server.create(options)

  1. views - Template directory for hbs files
  2. public - public assets folder
  3. enableSession - Enable or disable session
  4. sessionSecret - unique secret key for session
  5. beforeRouteInjection (optional) - a callback function that runs before Route mounting
  6. afterRouteInjection (optional) - a callback function that runs after Route mounting

Controller

file controllers/UsersController.ts

import { Request, Response } from 'express';
import { Controller, Get, Post, Put, Delete, Patch, Middleware } from '@softcripto/express';

@Controller('/users', middlewareExample)
export class UsersController {
    static children: Array<IRouteParams> = []; /// required

    @Middleware(anyMiddleware) /// single middleware
    @Get('/')
    index(req: Request, res: Response) {
        res.json({
            _id: "830493kdiei033-303939kfkdk",
            name: 'Akash Thapa',
            address: "Salugara and Chalouni"
        });
    }

    @Middleware(anyMiddleware) 
    @Middleware(anotherMiddleware)
    @Post('/')
    oneUser(req: Request, res: Response) {
        res.send("You are akash");
    }
}

More Decorators are described below

Route Decorators

@Controller

This is Class decorator

// without middleware
@Controller('/users')
class User {...}

// with one middleware
@Controller('/users', myMiddleware)
class User {...}

// with many middlewares
@Controller('/users', [myMiddleware, anotherMiddleware])
class User {...}

@Middleware

Method Decorator

// without middleware
@Controller('/users')
class User {
    @Middleware(myMiddleware)
    @Post('/')
    create(req, res, next){...}
}

@Post

Method Decorator

// without middleware
@Controller('/users')
class User {
    @Post('/')
    create(req, res, next){...}
}

@Get

Method Decorator

// without middleware
@Controller('/users')
class User {
    @Get('/')
    create(req, res, next){...}
}

@Put

Method Decorator

// without middleware
@Controller('/users')
class User {
    @Put('/')
    create(req, res, next){...}
}

@Patch

Method Decorator

// without middleware
@Controller('/users')
class User {
    @Patch('/')
    create(req, res, next){...}
}

@Delete

Method Decorator

// without middleware
@Controller('/users')
class User {
    @Delete('/')
    create(req, res, next){...}
}

License

MIT

2.2.2

4 years ago

2.2.1

4 years ago

2.2.0

4 years ago

2.1.0

4 years ago

2.0.0

4 years ago

1.0.0

4 years ago