如何在Flask Rest-Plus中自定义错误处理

时间:2019-05-07 15:52:08

标签: python error-handling flask-restplus custom-error-handling

我有一个API端点,我使用了Flask,Flask Rest-plus来解析我使用request-parser的请求。

问题是当我发送POST请求进行注册时一切正常,但是当我尝试从发布请求中删除电话号码时,出现错误400(错误请求),这是合乎逻辑的,问题是我想自定义此响应,因为该响应是由request-parser发送的(默认响应)

这是默认响应:

{
    "errors": {
        "phones": "Your phone Missing required parameter in the post body",
        "email": "your email@gmail.com Missing required parameter in the post body",
        "password": "The preference use uppercase && lowercase && special characters Missing required parameter in the post body",
        "confirmPassword": "The preference use uppercase && lowercase && special characters Missing required parameter in the post body"
    },
    "message": "Input payload validation failed"
}  

我想要这个回复:

{
    "body": {

    },
    "message": "send all inputs"
}  

主要问题是,即使我自定义errorHandler方法,它也不会返回我想要的响应

先谢谢了。

我用过

abort(code=400, message="value")
abort(code=400, {message="value"})

但不起作用

{
    "errors": {
        "phones": "Your phone Missing required parameter in the post body",
        "email": "your email@gmail.com Missing required parameter in the post body",
        "password": "The preference use uppercase && lowercase && special characters Missing required parameter in the post body",
        "confirmPassword": "The preference use uppercase && lowercase && special characters Missing required parameter in the post body"
    },
    "message": "Input payload validation failed"
}  

我想要这个回复:

{
    "body": {

    },
    "message": "send all inputs"
}  

在我的剩余文件中:

@api.errorhandler(BadRequest)
def request_error_handler(e):
    print(e)
    message = 'It seems that you sent an incorrect payload.'
    return render(message), HTTP['_bad_request']

Render方法返回一个对象:

def render(message, body={}):
    """
    Render response
    :return: string
    """
    return {"message": message, "body": body}

我想要这个回复:

{
    "body": {

    },
    "message": "send all inputs"
}  

0 个答案:

没有答案