0.0.3 • Published 3 years ago

@blued-core-oversea/http-server-base v0.0.3

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

基于 routing-controller 的简易封装,抽出了一些复用的逻辑。

npx install-peerdeps @blued-core/http-server-base

使用方式

import { createServer } from '@blued-core/http-server-base'

// 最简易的用法
createServer()

提供的参数

optiontypedefaultdesc
portnumber8000设置服务的端口号
isLocalbooleanfalse是否为本地开发环境,部分插件本地环境下会有额外的操作
distPathstring-静态资源路径
controllersPathstring|string[]项目根目录下的controllers文件夹设置路由文件存储的位置
controllerPatternstring|string[]['.ts', '.js']设置路由文件匹配的后缀
middlewareRegsiterFunction-自定义的中间件注册方式,会传递Koa实例到回调中
successFunction-服务启动成功后的回调
errorOverridingObjectParamRequiredError自定义的异常对象覆盖
loggerClientClient-日志插件
errorReportClient() => Client-异常监控插件
performanceClient() => Client-性能监控插件
beforeFunction-前置的全局中间件处理
afterFunction-后置的全局中间件处理

errorOverriding 结构描述

用于覆盖部分routing-controllers的自定义Error类型。

// key 为匹配异常类型对应的 name 所需
ParamRequiredError: {
  // 用于返回值的输出
  message: "missing field",
  // 用于设置覆盖后的异常类型
  name: "RequiredError",
  // 用于设置 http response status code
  statusCode: 403,
  // 用于在 JSON 类型的数据返回值中设置 code
  errorCode: 403,
}

loggerClient

logger 使用的是符合 @blued-core/logger-intl 约束的子类实现。
默认提供了一个 @blued-core/winston-logger,也可以选择自行实现。

import { createServer } from '@blued-core/http-server-base'
import LoggerClient from '@blued-core/winston-logger'
import Cache from '@blued-core/cache'

const cache = new Cache()
// 加载 log
const loggerClient = new LoggerClient(logPath, cache, isLocal)

createServer({
  loggerClient,
})

errorReportClient

用于错误监控时添加数据上报,使用的为符合 @blued-core/raven-client#RavenClientBuilder 的结构。
默认提供了一个@blued-core/raven-client, 也可以自行实现 @blued-core/client 子类。

import { createServer } from '@blued-core/http-server-base'
import { NormalConf } from '@blued-core/normal-conf'
import RavenClient from '@blued-core/raven-client'
import Cache from '@blued-core/cache'

const cache = new Cache()

const normalConf = new NormalConf({
  raven: 'XXX',
})
// 加载 raven
const ravenClient = new RavenClient(normalConf, cache)
ravenClient.isLocal = isLocal

createServer({
  errorReportClient () {
    return ravenClient.getClient('raven')
  },
})

performanceClient

用于性能监控时添加数据上报,使用的为符合 @blued-core/statsd-client#StatsdClientBuilder 的结构。
默认提供了一个@blued-core/statsd-client, 也可以自行实现 @blued-core/client 子类。

import { createServer } from '@blued-core/http-server-base'
import { NormalConf } from '@blued-core/normal-conf'
import StatsdClient from '@blued-core/statsd-client'
import Cache from '@blued-core/cache'

const cache = new Cache()

const normalConf = new NormalConf({
  statsd: {
    // statsd 上报 IP
    conf: '0.0.0.0',
    // statsd 上报 IP 对应的端口
    port: 1234,
    // 项目归属分组
    group: 'demo-group',
    // 项目名
    project: 'demo-project',
  },
})

const statsdClient = new StatsdClient(normalConf, cache)
statsdClient.isLocal = isLocal

createServer({
  performanceClient () {
    return statsdClient.getClient('statsd')
  },
})