代码拉取完成,页面将自动刷新
点击查看更新日志 CHANGELOG
点击查看 ROADMAP
yf-fpm-server是一款轻量级的api服务端,可通过插件集成数据库(mysql,mongodb)的数据操作,灵活扩展自定义业务逻辑
团队的产品从单平台,慢慢扩展到多个客户端,且有多个异构系统的数据交互,所以需要一个统一的数据输入输出口。
服务只有一个入口 /api ; 只接受application/json方式的请求,定义如下
参数名 | 类型 | 是否必须 | 参数说明 | 默认值 | 示例 |
---|---|---|---|---|---|
method | String | Y | 需要调用的业务函数 | 无 | |
appkey | String | Y | 应用被分配的密钥 | 无 | |
timestamp | Number | Y | 应用端的时间戳,用于验证请求的时效性 | 无 | 13位时间戳 |
v | String | N | 调用的服务端接口的版本号 | 无 | |
param | Object | N | 业务函数需要用到的参数,以JsonObject的形式传入 | 无 | |
sign | String | Y | 将接口参数进行升序排列,如 appkey,method,param,timestamp添加一个masterKey=xxx[此处的key来自于注册的key] 组合成appkey=123&masterKey=xxx¶m=44444&tmiestamp=140932932932[所有的参数值使用urlencode] 过md5加密,生成一个32位的密钥 | 无 |
参数名 | 类型 | 是否必须 | 参数说明 |
---|---|---|---|
errno | Number | Y | 业务函数的错误代码,通常为0,表示正常执行,<0 则表示执行错误,可通过应用说明获取到具体的错误原因。 |
message | String | N | 通常在执行出错的情况下,会输出错误的信息。 |
timestamp | Number | N | 返回服务端处理完信息之后的时间戳。 |
data | Object/Array | Y | 一般的查询类的业务函数,会在该字段下携带查询结果信息;具体是Object类型还是Array类型则根据不同的业务函数的说明而定。 |
error | Object | N | 错误信息的详细内容 |
这样的设计不能满足现在的restful范式,但是能满足小规模团队的需求,可提高业务实现的开发效率;
$ npm install yf-fpm-server --save
$ vi app.js
'use strict';
const { Fpm } = require('yf-fpm-server');
const fpm = new Fpm();
const biz = fpm.createBiz('0.0.1');
biz.addSubModules('test', {
foo: async (args, ctx, before) => {
return Promise.reject({errno: -3001})
}
});
fpm.addBizModules(biz);
fpm.run()
.then(() => {
fpm.logger.info('ready ...')
});
$ node app.js
异常编号 | 异常代码 | 异常信息 | 排查办法 |
---|---|---|---|
-900 | LOST_PARAM | param: [${col}] required! | 检查接口传入的参数 |
-901 | NO_POST_DATA | post data is empty! | 接口未传入参数 |
-902 | TIMEZONE_OVER | your time zone not sync the server! | 传入参数中的时间戳与服务器的事件戳相差超过了30分钟 |
-903 | SIGN_ERROR | param sign error! | 参数签名错误,请检查参数拼接过程是否异常 |
-904 | PLUGIN_LOAD_ERROR | missing plugin ! plugin: ${ pname } dependent plugin: ${ dname } | 某个插件缺失了另外一个插件的依赖 |
-905 | PARAM_IS_NOT_JSON | Param is not json! | 参数Param不是一个正确的json格式 |
-906 | SQL_INJECTION | you have sql keyword! ex:['drop ','delete ','truncate ',';','insert ','update ','set ','use '] | 传入的参数可能有sql注入 |
-907 | NOT_LATEST | Not the latest version | 不是最新的版本,请及时更新 |
-908 | NOT_METHOD | Cant find the method! | 调用的业务函数没有定义 |
-909 | BIZ_MODULE_EXTEND_ERROR | Biz Version ${version} Not Exists! | 扩展业务的接口版本不存在 |
-910 | TABLE_REQUIRED | table required! | 使用 DB 插件时,需要传入 table 参数 |
-911 | VERSION_UNDEFINED | version not defined! | 调用的业务函数版本不存在 |
-912 | AUTH_ERROR | auth error! plz check your appkey ~ ' | 客户端的appkey未授权 |
-913 | ROOT_ERROR | auth error! plz check roots of your app ~ | 客户端的appkey权限不够 |
-914 | BIZ_VERSION_REQUIRED | Biz Version Required | 业务组件版本未定义 |
-915 | HOOK_VERSION_REQUIRED | hook version cant be undefined | 钩子版本未定义 |
-916 | HOOK_HANDLER_REQUIRED | hook handler cant be undefined | 钩子函数未定义 |
-920 | UNDEFINED_EXCEPTION | UnDefinedException | 未定义的异常 |
-999 | UNCAUGHT_ERROR | System uncaughtException | 系统异常 |
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型