node中【request+validation】结合封装
来源:互联网 发布:java 乐观锁 例子 编辑:程序博客网 时间:2024/05/17 08:32
封装模块
var config = require( '../config' );var request = require( 'request' );exports.http = function( url, type, data, req, reqRule, headers, callback ){var rsMsg = {'code' : -100,'msg' : 'error','message' : '','reason' : '失败','data' : []};try{rsMsg = this.checkReqRuld( req, reqRule );if( rsMsg.code != 0 ){return res.json( rsMsg );}if( url == '' || url == undefined ){callback( rsMsg );}data.rS = config.rS;data.token = data.accessToken = data.token || req.session.token || '';if(typeof req.session.scsInfor !== 'undefined'){data.loginUid = req.session.loginUid;data.adUid = req.session.adUid;data.agUid = req.session.agUid;}var options = {headers : headers,url : config.server_base + url,form : data};console.log( '请求参数:', options );if( type == undefined || type == '' || type.toLowerCase() == 'get' ){delete options.form;options.qs = data;request.get( options, function( error, response, body ){//console.log(response);if( response.statusCode == 200 ){rsMsg = JSON.parse( body );}callback( rsMsg );console.log(rsMsg);} );}else if( type.toLowerCase() == 'post' ){request.post( options, function( error, response, body ){//console.log(response);if( response.statusCode == 200 ){rsMsg = JSON.parse( body );}callback( rsMsg);console.log(rsMsg);} );}else if( type.toLowerCase() == 'put' ){request.put( options, function( error, response, body ){if( response.statusCode == 200 ){rsMsg = JSON.parse( body );}callback( rsMsg );console.log(rsMsg);} );}else if( type.toLowerCase() == 'delete' ){request.delete( options, function( error, response, body ){if( response.statusCode == 200 ){rsMsg = JSON.parse( body );}callback( rsMsg );} );}else{request.get( options, function( error, response, body ){if( response.statusCode == 200 ){rsMsg = JSON.parse( body );}callback( rsMsg );} );}}catch( e ){rsMsg.message = e.message || e.stack || '未知错误';return callback( rsMsg );}}/* * node端验证规则 */exports.checkReqRuld = function( req, reqRule ){var rsMsg = {'code' : 0,'msg' : 'ok','message' : '成功','childMessages' : [],'data' : []};if( reqRule != undefined && reqRule.length > 0 ){var i = 0, j = 0, filed = null, rule = null, option = null;for( i in reqRule ){filed = reqRule[ i ].field;rule = reqRule[ i ].rule;if( reqRule[ i ].option != undefined ){option = reqRule[ i ].option;}for( j in rule ){switch( j ){case 'notEmpty':req.assert( filed, rule[ j ] ).notEmpty();break;case 'isInt':req.assert( filed, rule[ j ] ).isInt( option );break;case 'is_date':req.assert( filed, rule[ j ] ).isDate();break;case 'isIn':req.assert( filed, rule[ j ] ).isIn( option );break;case 'isFloat':req.assert( filed, rule[ j ] ).isFloat( option );break;case 'isJSON':req.assert( filed, rule[ j ] ).isJSON();break;}}}var errors = req.validationErrors();if( errors && errors.length > 0 ){rsMsg.code = -100;rsMsg.msg = 'error';rsMsg.message = '失败';for( var i = 0; i < errors.length; i++ ){rsMsg.childMessages.push( errors[ i ].msg );break;}}}return rsMsg;}
调用dome
//添加商圈APIexports.addApi = function(req, res, next){try{var data = {}, rule = [];data.lbs = req.body.lbs || ''; //商圈信息data.comcId = req.body.comcId || 0; //一级分类data.comScId = req.body.comScId || 0; //二级分类rule.push({'field' : 'lbs','rule' : {'notEmpty' : '商圈信息不能为空','isJSON' : '商圈信息不是一个合法的JSON'}}, {'field' : 'comcId','rule' : {'notEmpty' : '一级分类不能为空','isInt' : '一级分类Id必须为整数'}}, {'field' : 'comScId','rule' : {'notEmpty' : '二级分类不能为空','isInt' : '一级分类Id必须为整数'}});access.http('/AdDirect/AddCommonLbs', 'post', data, req, rule, '', function(result){return res.json(result)})}catch(err){console.log(err)}}
阅读全文
0 0
- node中【request+validation】结合封装
- node.js中结合redis实现session
- Node request
- node-request()
- request封装
- node中异步处理Promise封装调用
- node.js中结合redis实现session修改完善(2)
- 将request容器中的参数封装到javabean中
- Node request pipe
- node之http.request
- Request node模块
- node.js结合mongodb
- node.js结合mongodb
- node.js中函数的两种封装方式
- node+ejs【封装ejs模板中直接调用js方法】
- 在node中自己封装node_modules里的包
- validation之request、minlength验证区别
- 配置文件当中怎样修改request validation mode
- 制学科Siemens.Tecnomatix.Machine.Configurator.1.0.0.1027
- Xshell如何修改字体大小和颜色
- SQL join中级篇--hive中 mapreduce join方法分析
- 代码优化之ViewStub
- nodejs入门(02)-hello world
- node中【request+validation】结合封装
- iOS 获取当前设备连接Wi-Fi的方法总结
- 行人检测、跟踪与检索领域年度进展报告
- ORACLE11g服务定义
- 噪声函数
- 【ssm个人博客项目实战09】写博客与自定义监听器
- postgresql 数据库异步流 hot-standby异步流环境搭建及主备库切换
- Linux常用命令
- oracle 与 sql server 通过DB LINK连接