Как настроить обработку ошибок в флешке rest-plus - PullRequest
0 голосов
/ 07 мая 2019

У меня есть конечная точка API, я использовал Flask, Flask Rest-plus, для разбора запроса я использовал request-parser.

Проблема в том, что когда я отправляю POST-запрос на регистрацию, все работает нормально, но когда я пытался удалить номер телефона из почтового запроса, я получил ошибку 400 (Bad request), и это логично, проблема в том, что я хочу настроить этот ответ, потому что ответ отправляется парсером запросов (ответ по умолчанию)

Это ответ по умолчанию:

{
    "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"
}  
...