Restful Web Service错误处理

时间:2015-03-31 05:46:07

标签: python exception-handling flask sqlalchemy

在我的API中,在创建新用户时,我调用了许多函数:

userInfo = request.get_json()           
email = userInfo.get('email')       
password = userInfo.get('password')
validate_email(email)       
validate_password(password)     

if (no_errors):
    add_user_to_database(user)
else:
    return exception(?)

我的目标是,我想收集前3个function来电的结果中出现的所有错误。一个函数可能会捕获多个错误。

例如:

def validate_email(email):
    if email is None:
        # store error
    else:
        if email_already_on_server(email)
           # store error
        if email_too_long(email)
           # store error

    # What should I be doing here..

我存储了所有errors后,我想要返回exception(?),其中显示已选中的所有errors

我不确定最好的办法是......

1)我应该创建一个单独的对象(自定义错误类)来传递给我的所有函数来存储任何errors吗?

2)如果发现错误,我应该将什么返回给用户?它是自定义exceptionHTTP status code还包含JSON格式的所有错误吗?

我很难以正确的方式解决这个问题。

1 个答案:

答案 0 :(得分:0)

我喜欢使用jsonify库,然后用这种方式格式化错误:

from flask import jsonify

def jsonifys(status_code=200, **kwargs):
    response = jsonify(**kwargs)
    response.status_code = status_code
    return response

然后我会从我的方法中提出错误,在我的回复中,我将返回如下结果:

return jsonifys(500, error='unable to create process')

因此,任何前端都可以轻松读取错误代码,并且消息可以提供所需的任何信息。 JSON格式也很方便。