2017-02-17 4 views
0

У меня есть приложение React, которое взаимодействует с сервером Python Flask.Флажок правильный способ обработки ошибок с вызовом AJAX с лицевой стороны

Я реализую функцию, позволяющую пользователю сменить пароль. Запрос AJAX производится из React to Flask. Это отправляет старый пароль и новый пароль.

Я делаю все проверки на лицевой стороне, чтобы убедиться, что пароль соответствует требованиям.

После того, как данные отправлены с лицевой стороны, флажок затем проверяет правильность старого пароля и затем обновляет новый пароль. Это отправляет ответ 200 обратно клиенту. Когда все будет успешным, у меня нет проблем.

Однако я не уверен, что делать в ситуации, когда пользователь отправляет статус 200, но возвращенное сообщение json отличается.

Мой вопрос в том, действительно ли должен быть отправлен ответ об ошибке на данном этапе.

Это то, что мой код выглядит

@customer.route('/update-password', methods=['POST']) 
def update(): 
    current_password=request.json['currentPassword'] 
    password=request.json['newPassword'] 

    login_response = engine.login('testUser', current_password) 
    if login_response.get('success'): 
     password_response = engine.update_user_password(password=password) 
     if password_response.get('success'): 
      return jsonify(message='password_updated_success') 
     else: 
      return jsonify(message='password_update_error') 
    else: 
     return jsonify(message='incorrect_password_provided') 

А вот мой передний конец кода

axios.post('update-password', { 
    currentPassword: oldPassword, 
    newPassword: newPassword 
}).then(response => { 
    dispatch(updatePasswordSuccess()); 
    resolve(response); 
}).catch(err => { 
    dispatch(updatePasswordError()); 
    reject(err); 
}); 

ответ

2

Изменение структуры ответа явно послать одну из соответствующих кодов HTTP Error (например, 500) к вашему интерфейсу, поэтому AJAX определит, что произошла ошибка.

В основном что-то вроде этого:

return jsonify(message='password_update_error'),500 

См Колба документации here для получения дополнительной информации по этому