1.0.5 • Published 7 years ago

ys-helper v1.0.5

Weekly downloads
2
License
ISC
Repository
-
Last release
7 years ago

此插件包更名为ys-helper,具备的功能如下

  1. 接口助手
    • 支持数据格式统一
    • 支持中间件
  2. 异常助手

#调用方式


var ysHelper = require('ys-helper'),
    api1 = ysHelper.apiInit('v1'),
    api2 = ysHelper.apiInit('v2'),
    api3 = ysHelper.apiInit('v3'),
    api4 = ysHelper.apiInit('v4'),
    errors = ysHelper.errors;

ap1.post({
    action: '....',
    param1: '....',
    param2: '....',
}).then(function(data){
    console.log(data)
}).catch(errors.ApiError, function(err){
    //可以通过异常类型处理错误
    console.log(err);
}).catch(function(err){
    console.log(err);
});

#中间件定义

var Promise = require('bluebird');
var TestMiddleWare = (function() {
  function TestMiddleWare() {}

  //定义接口在请求开始前的处理
  TestMiddleWare.prototype.start = function(request) {
    console.log('request start');
    console.log(request.params);
    return Promise.resolve();
  };
  
  //定义接口在数据已处理完成准备请求前的处理
  TestMiddleWare.prototype.afterMakeRequest = function(request) {
    console.log(request.params);
    return Promise.resolve();
  };

  //定义接口请求结束后的处理
  TestMiddleWare.prototype.end = function(request) {
    console.log('request end');
    return Promise.resolve();
  };
  
  //定义接口请求异常时的处理
  TestMiddleWare.prototype.error = function(request, err) {
    console.log('request error', err);
    return Promise.resolve();
  };

  return TestMiddleWare;

})();

#中间件使用

var middlewares = [
    [TestMiddleWare]
]
var api = ysHelper.apiInit(version, middlewares);

#为何需要异常助手 1. 分流错误处理,每个控制器的编写再也不需要去考虑我这个异常该怎么处理,那个错误该怎么返回 2. 保持promise格式的优雅,有异常有错误都是直接到catch中,只要一路写then即可

#异常助手说明

  1. errors.HttpError -- 接口http访问异常
    • message -- 错误信息
    • version -- api版本
    • action -- 接口名称
  2. errors.ApiError -- 接口信息异常
    • message -- 错误信息
    • version -- api版本
    • action -- 接口名称
  3. errors.TipsError -- 告知程序此异常可通知于用户

    • message -- 错误信息

#异常助手使用栗子

###后端代码

app.post('/getData', function(req, res, next){
    api.post({
        action: 'xxxxx',
        params: 'xxxxx'
    }).then(function(data){
        if(!data.status){
            return Promise.reject(new errors.TipsError(data.msg));
        }
        return api.post({
            action: 'xxxxx',
            params: 'xxxxx'
        });
    }).then(function(data){
        res.json({status: true, data: data});
    }).catch(next);
});

app.use(function(err, req, res, next){
    if(err instanceof errors.TipsError){
        res.json({status: false, errors: 1, tips: err.message});
    }else if(err instanceof otherError){
        res.json({status: false, errors: 2})
    }else{
        res.status(500).render('error');
    }
});

###前端全局代码

$(document).ajaxError(function(){
    alert('系统繁忙,请稍后重试');
}).ajaxSuccess(function(event, xhr){
    var data = JSON.parse(xhr.responseText);
    if(!data.status){
        switch(data.errors){
            case 1:
                alert(data.tips);
                break;
            case 2:
                alert(....);
                break;
            default:
                ....
        }
    }
});

###前端页面代码

$.post('/getData', {param: 'xxxx'}, function(data){
    if(!data.status) return; //此处直接return,交由全局处理自动处理
    //此处处理正常逻辑,开发人员对于异常/错误提示的处理可以集中在全局,从此精力可完全集中于正常的逻辑处理
}, 'json');

#接口开发说明 接口最基础的类是api/Tools.coffee,下一层是api/httpHelper.https.coffee,最终api接口继承httpHelper的Request类

Tools.coffee是用来集中api接口处理数据时所需的各种方法

httpHelper.coffee是用来程序最终访问http接口的处理,其中make_request是在请求前处理要发送的数据信息,dispose_data用来处理请求后最终返回的数据格式

每个api版本继承了Request后,通过重写make_request和dispose_data来处理不同版本间的差异

接口约定的返回格式统一为


{
    status: 'bool', 
    raw: '接口返回的原始数据', 
    data: '开发者可以直接拿来处理的数据', 
    msg: 'status为false的信息'
}

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago

0.8.13

7 years ago

0.8.12

7 years ago

0.8.11

7 years ago

0.8.10

7 years ago

0.8.9

7 years ago

0.8.8

7 years ago

0.8.7

7 years ago

0.8.6

7 years ago

0.8.5

7 years ago

0.8.4

7 years ago

0.8.3

7 years ago

0.8.2

7 years ago

0.8.1

7 years ago

0.8.0

7 years ago

0.7.13

7 years ago

0.7.12

7 years ago

0.7.11

7 years ago

0.7.10

7 years ago

0.7.9

7 years ago

0.7.8

7 years ago

0.7.7

7 years ago

0.7.6

7 years ago

0.7.5

7 years ago

0.7.4

7 years ago

0.7.3

7 years ago

0.7.2

7 years ago

0.7.1

7 years ago

0.7.0

7 years ago

0.6.9

7 years ago

0.6.8

7 years ago

0.6.7

7 years ago

0.6.6

7 years ago

0.6.5

7 years ago

0.6.4

7 years ago

0.6.3

7 years ago

0.6.2

7 years ago

0.6.1

7 years ago

0.6.0

7 years ago

0.5.49

7 years ago

0.5.48

7 years ago

0.5.47

7 years ago

0.5.46

7 years ago

0.5.45

7 years ago

0.5.44

7 years ago

0.5.43

7 years ago

0.5.42

7 years ago

0.5.41

7 years ago

0.5.40

7 years ago

0.5.39

7 years ago

0.5.38

7 years ago

0.5.37

7 years ago

0.5.36

7 years ago

0.5.35

7 years ago

0.5.34

7 years ago

0.5.33

7 years ago

0.5.32

7 years ago

0.5.31

7 years ago

0.5.30

7 years ago

0.5.29

7 years ago

0.5.28

7 years ago

0.5.27

7 years ago

0.5.26

7 years ago

0.5.25

7 years ago

0.5.24

7 years ago

0.5.23

7 years ago

0.5.22

7 years ago

0.5.21

7 years ago

0.5.20

7 years ago

0.5.19

7 years ago

0.5.19-c

7 years ago

0.5.18

7 years ago

0.5.17

7 years ago

0.5.16

7 years ago

0.5.15

7 years ago

0.5.14

7 years ago

0.5.13

7 years ago

0.5.12

7 years ago

0.5.11

7 years ago

0.5.10

7 years ago

0.5.9

7 years ago

0.5.8

7 years ago

0.5.7

7 years ago

0.5.6

7 years ago

0.5.5

7 years ago

0.5.4

7 years ago

0.5.3

7 years ago

0.5.2

7 years ago

0.5.1

7 years ago

0.5.0

7 years ago

0.4.41

7 years ago

0.4.40

7 years ago

0.4.39

7 years ago

0.4.38

7 years ago

0.4.37

7 years ago

0.4.36

7 years ago

0.4.35

7 years ago

0.4.34

7 years ago

0.4.33

7 years ago

0.4.32

7 years ago

0.4.31

7 years ago

0.4.30

7 years ago

0.4.29

7 years ago

0.4.28

7 years ago

0.4.27

7 years ago

0.4.26

7 years ago

0.4.25

7 years ago

0.4.24

7 years ago

0.4.23

7 years ago

0.4.22

7 years ago

0.4.21

7 years ago

0.4.20

7 years ago

0.4.19

7 years ago

0.4.18

7 years ago

0.4.17

7 years ago

0.4.16

7 years ago

0.4.15

8 years ago

0.4.14

8 years ago

0.4.13

8 years ago

0.4.12

8 years ago

0.4.11

8 years ago

0.4.10

8 years ago

0.4.9

8 years ago

0.4.8

8 years ago

0.4.7

8 years ago

0.4.6

8 years ago

0.4.5

8 years ago

0.4.4

8 years ago

0.4.3

8 years ago

0.4.2

8 years ago

0.4.1

8 years ago

0.4.0

8 years ago

0.3.38

8 years ago

0.3.37

8 years ago

0.3.36

8 years ago

0.3.35

8 years ago

0.3.34

8 years ago

0.3.33

8 years ago

0.3.32

8 years ago

0.3.31

8 years ago

0.3.30

8 years ago

0.3.29

8 years ago

0.3.28

8 years ago

0.3.27

8 years ago

0.3.26

8 years ago

0.3.25

8 years ago

0.3.24

8 years ago

0.3.23

8 years ago

0.3.22

8 years ago

0.3.21

8 years ago

0.3.20

8 years ago

0.3.19

8 years ago

0.3.18

8 years ago

0.3.17

8 years ago

0.3.16

8 years ago

0.3.15

8 years ago

0.3.14

8 years ago

0.3.13

8 years ago

0.3.12

8 years ago

0.3.11

8 years ago

0.3.10

8 years ago

0.3.9

8 years ago

0.3.8

8 years ago

0.3.7

8 years ago

0.3.6

8 years ago

0.3.5

8 years ago

0.3.4

8 years ago

0.3.3

8 years ago

0.3.2

8 years ago

0.3.1

8 years ago

0.2.26

8 years ago

0.2.2-5.3

8 years ago

0.2.2-5.2

8 years ago

0.2.2-5.1

8 years ago

0.2.25

8 years ago

0.2.24

8 years ago

0.2.23

8 years ago

0.2.22

8 years ago

0.2.21

8 years ago

0.2.20

8 years ago

0.2.19

8 years ago

0.2.1-8.1

8 years ago

0.2.18

8 years ago

0.2.17

8 years ago

0.2.16

8 years ago

0.2.15

8 years ago

0.2.14

8 years ago

0.2.13

8 years ago

0.2.12

8 years ago

0.2.11

8 years ago

0.2.9

8 years ago

0.2.8

8 years ago

0.2.7

8 years ago

0.2.6

8 years ago

0.2.5

8 years ago

0.2.4

8 years ago

0.2.3

8 years ago

0.2.2

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago