2.0.1 • Published 3 years ago

@jasonsoft/koa-controller v2.0.1

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

koa-controller

Controller extension by @koa/router or koa-router middleware 🦞

NPM version NPM Downloads License

Installation

npm i --save @jasonsoft/koa-controller

Quick Start

/**
 * Example: https://github.com/jasonsoft-net/jasonsoft-koa-server
 * FilePath: /jasonsoft-koa-server/app.js
 * * 初始化相关服务和注入相关中间件
 * Added by Jason.Song (成长的小猪) on 2021/01/31
 * ? CSDN: https://blog.csdn.net/jasonsong2008
 * ? GitHub: https://github.com/jasonsoft-net
 */
import Koa from 'koa';
import Router from '@koa/router';
/**
 * Import the ControllerProvider from @jasonsoft/koa-controller
 */
import { ControllerProvider } from '@jasonsoft/koa-controller';

/** Instantiate the Koa object  */
const app = new Koa();

/** router middleware */
const router = new Router();

/** Inject the controller directory */
ControllerProvider.initControllers({
  router,
  /** The default directory is './src/controllers' */
  dir: './app/controllers',
  /** Whether to enable the body parser, the default setting is false, not enabled */
  bodyParser: true,
});
app.use(router.routes()).use(router.allowedMethods());

/** 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}`,
  );
});
/**
 * Example: https://github.com/jasonsoft-net/jasonsoft-koa-server
 * FilePath: /jasonsoft-koa-server/app/controllers/user/users.controller.js
 * Import Controller, Get, Post, Put, Delete, Patch, Options, Head, All, etc. decorators
 */
import {
  Controller,
  Get,
  Post,
  // Post,
  // Put,
  // Delete,
  // Patch,
  // Options,
  // Head,
  // All,
} from '@jasonsoft/koa-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(ctx) {
    const { id } = ctx.params;
    return this.users.find((user) => user.id === +id);
  }

  /**
   * POST http://localhost:3000/users
   */
  @Post()
  async createUser(ctx) {
    return { success: true, data: ctx.request.body };
  }
}

controller loading

完整示例 Example