Использование ответа JSON от Flask Restful с Angular 6

Я начал изучать API с помощью flask restful и angular 6, я добился некоторого прогресса, но я застрял, пытаясь получить ответ API json с angular и извлечь сообщение, которое у него есть.

Мне удалось заставить его работать с настраиваемыми исключениями при возникновении ошибки, поэтому, если api обнаружит и обнаружит ошибку, он вызовет исключение, и flask ответит примерно так:

{
    'message': "An account with this email already exists.",
    'status': 409,
}

И это работает, мне удалось отправить уведомление с этим сообщением пользователю в angular с помощью этого:

this.userService.register(this.registerForm.value)
        .pipe(first())
        .subscribe(
            (data) => {
                //THIS DOESN'T
                this.notificationService.success(environment.notifications.successTitle, data);
                this.router.navigate(['/login']);
            },
            (err) => {
                // THIS WORKS!
                this.notificationService.error(environment.notifications.errorTitle, err);
                this.showSpinner = false;
            });

Когда API отправляет ошибку, как я показал выше json, он работает, если я

console.info(err);

он печатает только сообщение, даже если тело ответа содержит весь json, данные, с другой стороны (когда нет ошибки), если я

console.info(data);

он печатает весь json.

Я знаю, что если я сделаю что-то вроде data ['message'], это сработает, но я хочу знать, почему при возникновении ошибки переменная err содержит только сообщение, а data содержит весь json.

Оба ответа от API имеют одинаковые заголовки, одно и то же тело, единственное, что изменяется, - это сообщение и статус в json. Но когда я console.info переменную err, он показывает только сообщение, данные, с другой стороны, показывают весь json.

Я даже не знаю, является ли весь этот вопрос проблемой или он предназначен для работы таким образом, в таком случае мне следует использовать data ['message']? Что делать, если по какой-то причине у данных нет сообщения?

Я пробовал вернуться из API вот так:

return jsonify({"message": "Account created successfully."}), 201
return {"message": "Account created successfully."}, 201
return jsonify({"message": "Account created successfully.", "status": 201})

Я также пытался создать собственный экземпляр Response (из колбы), но безуспешно. И если я использую jsonify, это дает мне ошибку «не сериализуемый JSON».

Я думал сделать каждый ответ исключением, но в этом нет смысла.

если у данных нет сообщения, он вернет None

Shihe Zhang 22.10.2018 03:21
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
1
161
0

Другие вопросы по теме