2013-09-21 8 views
0

Я разоблачаю конечные точки HTTP - вывод JSON исключительно с использованием Bottle.Лучшая практика избегать исключения исключений на конечных точках?

Ошибки в настоящее время бросают: {'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 

Но я мог бы так же легко избежать с помощью исключения ALLtogether, что приводит к более краткой + сушилке коды конечной точки с пониженными накладными расходами.

Однако есть недостатки; другим разработчикам потребуется прочитать или запустить код хотя бы один раз, чтобы понять выходной формат.

Документация будет работать здесь; однако вся эта установка плохая практика?

ответ

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>) 
Смежные вопросы