2013-09-21 51 views
0

我公开了HTTP端点 - 仅使用Bottle输出JSON。避免在端点上引发异常的最佳做法?

目前丢失的错误:{'error': %s, 'error_message': %s, 'status_code': #}

所以在我的所有端点decoratored功能我:

try: 
    someObj = <stuff> 
except <MyCustomErrors> as e: 
    response.status = e.response.pop('status_code', 500) 
    return e.response 

response.status = someObj.response.pop('status_code', 200) 

return someObj.response 

但我可以很容易地避免使用异常产品总数,从而降低开销,更为简洁+机端点代码。

然而存在缺点;其他开发者至少需要阅读或运行代码一次以了解输出格式。

文档将在这里工作;然而,这是整个设置不好的做法?

回答

0

在此期间,我写这个可怜的替代品:

# Not a decorator because I can't work out how to give `@route(apply=)` func args 
def error_else_response(init_with): 
    try: 
     result = init_with(**request.query) 
    except <CustomError> as e: 
     response.status = e.msg.pop('status_code') 
     return e.msg 

    response.status = result.response.pop('status_code') 

    return result.response 


@route('/augment') 
def augment(): 
    return error_else_response(<CustomClass>)