文档
API
Api

Api

辅助方法

isProduction

判断是否是生产环境, 通过 NODE_ENV 来判断, NODE_ENV 只有 dev 和 production 两个值

import { isProduction } from '@yunflyjs/yunfly'
 
const isprod = isProduction();

deepMerge

深度合并两个对象,可以合并 object 与 array

import { deepMerge } from '@yunflyjs/yunfly'
 
const x = {
    foo: { bar: 3 },
    array: [{
        does: 'work',
        too: [ 1, 2, 3 ]
    }]
}
 
const y = {
    foo: { baz: 4 },
    quux: 5,
    array: [{
        does: 'work',
        too: [ 4, 5, 6 ]
    }, {
        really: 'yes'
    }]
}
 
const output = {
    foo: {
        bar: 3,
        baz: 4
    },
    array: [{
        does: 'work',
        too: [ 1, 2, 3 ]
    }, {
        does: 'work',
        too: [ 4, 5, 6 ]
    }, {
        really: 'yes'
    }],
    quux: 5
}
 
deepMerge(x, y) // => output

getPackageJson

获得项目 package.json 信息

import { getPackageJson } from '@yunflyjs/yunfly'
 
const projectName = getPackageJson().name;

getCpusLength

获得容器下的 cpu 个数,测试环境下默认 4 个

import { getCpusLength } from '@yunflyjs/yunfly'
 
cosnt cpuLength = getCpusLength();

randomString

获得一个随机数

import { randomString } from '@yunflyjs/yunfly'
 
// 获得一个12位数的随机字符串
const randomStr = randomString(12);

firstWordToUpperCase

第一个单词大写

import { firstWordToUpperCase } from '@yunflyjs/yunfly'
 
firstWordToUpperCase('abCd') // => Abcd

getDirPaths

获得某个目录下的文件列表,排除 .d. 文件

import { getDirPaths } from '@yunflyjs/yunfly'
import * as path from 'path'
 
getDirPaths(path.join(__dirname, './controllers'))

routing-controllers apis

yunfly 默认导出了所有 routing-controllers 的 api, 因此所有 routing-controllers 的 api 都可以从 yunfly 中导入

ExampleController.ts
import { Get, JsonController, QueryParam } from '@yunflyjs/yunfly';
 
@JsonController('/example')
export default class ExampleController {
    @Get('/test')
    async test(
        @QueryParam("name") name: string,
        @QueryParam("orgcode") orgcode: string
    ): Promise<types.example.Response | undefined> {
        return {
            name,
            orgcode
        };
    }
}

更多 routing-controllers api 请参考:https://www.npmjs.com/package/routing-controllers (opens in a new tab)

typedi apis

yunfly 默认导出了所有 typedi 的 api, 因此所有 typedi 的 api 都可以从 yunfly 中导入

ExampleController.ts
import { Get, JsonController, QueryParam, Inject } from '@yunflyjs/yunfly';
import Example from "../service/Example";
 
@JsonController('/example')
export default class ExampleController {
    @Inject() private example: Example;
 
    @Get('/test')
    async test(
        @QueryParam("name") name: string,
        @QueryParam("orgcode") orgcode: string
    ): Promise<types.example.Response | undefined> {
       return await this.example.doSomething(name, orgcode);
    }
}

更多 typedi api 请参考: https://docs.typestack.community/typedi/ (opens in a new tab)

errors api

BadRequestError

参数错误, HTTP 状态码:400

import { BadRequestError } from '@yunflyjs/yunfly';
 
throw BadRequestError()

UnauthorizedError

用户未登录, HTTP 状态码: 401

ForbiddenError

用户无权限, HTTP 状态码: 403

NotFoundError

用户无权限, HTTP 状态码: 404

MethodNotAllowedError

方法不允许, HTTP 状态码: 405

TooManyRequestsError

过多请求, HTTP 状态码: 429

InternalServerError

代码不严谨导致的服务器错误, HTTP 状态码: 500

BadGatewayError

网关错误, HTTP 状态码: 502

ServiceUnavailableError

服务不可用, HTTP 状态码: 503

GatewayTimeoutError

网关超时, HTTP 状态码: 504

RpcError

RPC 错误, HTTP 状态码: 500 , code 码:code 由 go 返回的决定,默认值是 -1

YunflyError

yunfly 框架自身异常, HTTP 状态码: 500 , code 码:10000 ~ 1099

ApolloError

Apollo 错误 , HTTP 状态码: 500 , code 码:10100 ~ 10199

RedisError

Redis 错误 , HTTP 状态码: 500 , code 码:10200 ~ 10299

EctdError

ECTD 错误 , HTTP 状态码: 500 , code 码:10300 ~ 10399

MysqlError

Mysql 错误 , HTTP 状态码: 500 , code 码:10400 ~ 10499

MongoDBError

MongoDB 错误 , HTTP 状态码: 500 , code 码:10500 ~ 10599