1.0.10 • Published 7 months ago

koa-api-plus v1.0.10

Weekly downloads
-
License
ISC
Repository
github
Last release
7 months ago

基于 Typescript + KOA 开发的 Restful APi 接口

测试网站

测试网站 api.xygeng.cn

特点


  • ts 开发
  • 支持装饰器和 控制器 创建接口
  • 具有日志记录功能

安装


  • 克隆代码
  • 安装依赖
yarn
  • 开发运行项目
yarn run dev
  • 打包命令
yarn run build
  • 生产环境
yarn add koa-api-plus

控制器(重点)


存放控制器的目录,防止路由重复,文件名将默认为路由前缀。路由规则:/文件夹名/类装饰器(文件名,index文件为斜杠)/方法装饰器(方法名),支持不断嵌套

控制器文件命名规则:index.controller.ts

装饰器

  • Controller()装饰器,在类前面使用:@Controller(路由前缀),默认文件名就是前缀

    @Controller('user')

  • GET/POST,请求方法,在类方法前面使用:@函数(路由)

    @GET('/login') 对应的路由就是 /user/login

使用方法

// index.js
import { Controller, Get, Post } from 'koa-api-plus';
@Controller()
export default class IndexController {
    @GET('/test')
    async hello() {
        return {
            title: 'haha'
        };
    }
}
// [Get] /test => {}

// user/index.controller.ts
import { Controller, Get, Post } from 'koa-api-plus';
@Controller()
export default class IndexController {
    @POST('/test')
    async hello() {
        return {
            title: 'haha'
        };
    }
}

// 【Post】 /user/test =>{}

详细用例

文件:完整查看例子源码

hello-world 例子

//
import Api, { Controller, Get, Logger, Param, Post, ApiLogger } from '../../src';

type User = {
    id: number;
    name: {
        firstName: string;
        lastname: string;
    };
};

@Controller()
export class GetController {
    @Get('/get')
    // 获取query参数
    public get(@Param.Query<User>('id') id: number) {
        if (id) {
            return {
                id
            };
        }
        return null;
    }
}

@Controller('/post')
export class PostController {
    // 定义日志
    @Logger()
    private logger!: ApiLogger;
    @Post('/')
    // 获取body参数
    public post(@Param.Body<User>('id') id: number, @Param.Body<User>('name.firstName') firstName: string) {
        this.logger.log('post测试:', { id, firstName });
        if (id && firstName) {
            return {
                id,
                firstName
            };
        }
        return null;
    }
}

// 创建实例
const api = new Api();

api.on('log', (...args) => {
    console.log('[log]', ...args);
});
api.on('start', () => {
    console.log('[start]');
});

api.on('error', (e) => {
    console.error('[error]', e);
});

// 启动
api.start();

实例函数

// 事件监听
app.on();
// koa默认中间件
app.use();

// 默认启动服务
app.start();

打包流程

1、自动加载控制器

直接打包即可

1.0.9

7 months ago

1.0.8

8 months ago

1.0.7

8 months ago

1.0.10

7 months ago

1.0.6

9 months ago

1.0.5

10 months ago

1.0.4

10 months ago

1.0.3

10 months ago

1.0.2

11 months ago

1.0.1

11 months ago

1.0.0

11 months ago