0

我正在使用 Bottle 公开 HTTP 端点——专门输出 JSON。

当前抛出的错误:{'error': %s, 'error_message': %s, 'status_code': #}.

所以在我所有的端点装饰函数中,我都有:

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

但是我可以很容易地避免一起使用异常,从而产生更简洁的 + DRYer 端点代码并减少开销。

但是也有缺点;其他开发人员需要至少阅读或运行一次代码以了解输出格式。

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

4

1 回答 1

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>)
于 2013-09-22T13:01:51.050 回答