1.0.0 • Published 3 years ago

@jasonsoft/express-controller v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

express-controller

Controller extension by express router middleware 🦀

NPM version NPM Downloads License

Installation

npm i --save @jasonsoft/express-controller

Quick Start

/**
 * Example: https://github.com/jasonsoft-net/jasonsoft-express-server
 * FilePath: /jasonsoft-express-server/app.js
 * Added by Jason.Song (成长的小猪) on 2021/09/28
 * CSDN: https://blog.csdn.net/jasonsong2008
 * GitHub: https://github.com/jasonsoft-net
 * Organizations: https://github.com/jasonsoft
 */
import Express from 'express';
/**
 * Import the ControllerProvider from @jasonsoft/express-controller
 */
import { ControllerProvider } from '@jasonsoft/express-controller';

const app = new Express();
/**
 * Inject the controller directory
 */
ControllerProvider.initControllers({
  router: app,
  /** The default directory is './src/controllers' */
  dir: './app/controllers',
});

/** Service port */
const port = Number(process.env.PORT || 3000);

/** Listening port */
app.listen(port, () => {
  console.log(
    `[\x1B[36mRunning\x1B[0m] Application is running on: http://localhost:${port}`,
  );
});
/**
 * Import Controller, Get, Post, Put, Delete, Patch, Options, Head, All, etc. decorators
 */
import {
  Controller,
  Get,
  // Post,
  // Put,
  // Delete,
  // Patch,
  // Options,
  // Head,
  // All,
} from '@jasonsoft/express-controller';

/** Inject the controller decorator */
@Controller()
export default class AppController {
  constructor() {
    this.message = {
      title: 'Welcome to use jasonsoft-express-server template',
      author: 'Jason.Song',
      github: 'https://github.com/jasonsoft-net',
      organization: 'https://github.com/jasonsoft',
    };
  }

  /**
   * GET http://localhost:3000/
   */
  @Get()
  async index() {
    return this.message;
  }
}
/**
 * Import Controller, Get, Post, Put, Delete, Patch, Options, Head, All, etc. decorators
 */
import {
  Controller,
  Get,
  // Post,
  // Put,
  // Delete,
  // Patch,
  // Options,
  // Head,
  // All,
} from '@jasonsoft/express-controller';

@Controller('users')
export default class UsersController {
  constructor() {
    this.users = [
      {
        id: 1,
        username: 'jason',
      },
      {
        id: 2,
        username: 'steve',
      },
    ];
  }

  /**
   * GET http://localhost:3000/users
   */
  @Get()
  async getUsers() {
    return this.users;
  }

  /**
   * GET http://localhost:3000/users/1
   */
  @Get(':id')
  async getUserById(req) {
    const { id } = req.params;
    return this.users.find((user) => user.id === +id);
  }
}

controller loading

完整示例 Example