node-beauty

node-beauty 是一个基于 Node.js restify 模块的 RESTful 服务器,你可以在以下地址找到该项目介绍及源代码,本页面仅为 自定义服务模块 提供开发指导。

NPM: https://www.npmjs.com/package/node-beauty
GITHUB: https://github.com/hdwong/node-beauty

$ npm install node-beauty

API


core – 核心类

Beauty 通过 core 类为服务模块提供常用的通用函数,并将个服务模块关联在一起(通过钩子函数),以解开模块间的业务耦合。

core.getRootPath – 获取根目录

string getRootPath ( void )

获取程序的根目录的绝对路径,即 app.js 启动程序所在目录。

core.getConfig – 获取配置信息

object getConfig ( string section )

获取服务模块的配置信息,该值来自配置文件的 service 部分。

core.getLogger – 获取日志类

Logger getLogger ( string section )

获取服务模块的日志类,若设置了 log4js 模块,则依赖该模块的配置文件并实现日志功能,否则 logger 只会输出到控制台。

logger 提供了 6 个日志登录(详细请参考 log4js)。

  • trace
  • debug
  • info
  • warn
  • error
  • fatal
core.getService – 获取服务类

object getService ( string service )

对于有依赖关系的类或者基础服务,Beauty 可以通过 getService 来获得类引用,如在模块中需要使用到 MySQL,那么可以:

core.serviceInvoke – 调用某服务的钩子

void serviceInvoke ( string service, string hook, mixed args, function callback )

对于无依赖关系的类,为了降低模块间的耦合度,Beauty 支持使用钩子调用的方式来实现模块间调用,钩子的定义格式查看 [module].hooks

core.serviceInvokeAll – 调用所有服务的钩子

void serviceInvokeAll ( string hook, mixed args, function callback )

该方法会调用所有已安装模块中实现了 hook 钩子的方法。

core.serviceHook – 检查模块是否实现钩子

boolean serviceHook ( string service, string hook )

该方法判断某个服务模块是否已实现了某个钩子。

core.serviceImplements – 获取实现钩子的模块列表

array serviceImplements ( string hook )

该方法会获取已实现了某个钩子的服务模块列表。

core.randomString – 生成随机字符串

string randomString ( int len, string mode )

可通过 mode 来指定随机字符串的格式:

  • 10 – 数字 [0-9]
  • 16 – 16 进制字符 [0-9a-f]
  • c – 大小写字母 [a-zA-Z]
  • l – 小写字母 [a-z]
  • u – 大写字母 [A-Z]
  • ln – 数字和小写字母 [0-9a-z]
  • un – 数字和大写字母 [0-9A-Z]
core.now – 获取时间戳

int now ( void )

获取当前 UNIX 时间戳。

core.forEach – 遍历集合

void forEach ( [object/array] collection, function row, function end )

该方法会遍历 collection 参数,该参数可以是对象或者数组(通过 lodash.forEach 方法实现)。

每一行记录会调用 row 函数,该函数接受当前值和一个 next 函数,用于执行下一行,当 collection 遍历完毕,end 函数会被调用。

[module].init – 服务模块初始化

void init ( string serviceName, core core )
init ( string serviceName, core core, function next )

每个服务模块都会做一些初始化工作,需要实现 init 方法,Beauty 就会自动在加载模块时自动按顺序调用每个模块的 init。

若设置 next 回调函数,则告诉 Beauty 是异步的初始化(如 MySQL 或 Redis 的连接创建),需待异步回调后再显式执行 next 进入下一个模块的 init。

[module].uninit – 服务模块卸载

void uninit ( void )

若实现了该方法,Beauty 会在服务关闭时顺序调用每个 uninit。

[module].hooks – 钩子定义

array hooks ( void )

钩子定义格式:

[
‘钩子名称 1’: ‘钩子回调函数名称 1’,
‘钩子名称 2’: ‘钩子回调函数名称 2’,

]

钩子名称钩子回调函数名称 都必须是字符串,且回调函数必须在类中被实现,否则钩子无效。

例子:

服务接口方法实现

服务接口的调用 url 格式为:/[服务模块名称]/[接口方法名称|'default']
Beauty 会根据请求的方法 req.method 自动查找对应的方法,找不到则返回 404,目前只支持:

  • get – 获取
  • post – 创建
  • put – 更新
  • delete – 删除

void [get/post/put/delete]_methodName ( request req, response res, function next )

GET: /foo/bar,则 Beauty 会查找 foo 服务模块是否安装,且模块内是否已实现 get_bar 方法。

reqres 来源于 restify 模块,分别为请求对象和响应对象,next 函数为结束方法,必须显式调用以把响应控制交还 Beauty,否则会造成客户端无响应。

基础服务模块

为方便基础服务的快速复用,Beauty 提供了一些常用的基础服务模块,每个模块可能都有各自的配置项,详细请查看相应的 API 文档,加载方法:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Time limit is exhausted. Please reload CAPTCHA.