node中【request+validation】结合封装

xiaoxiao2021-02-28  115

封装模块

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

//添加商圈API exports.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) } }

转载请注明原文地址: https://www.6miu.com/read-20072.html

最新回复(0)