Изменить состояние и перенаправить - PullRequest
0 голосов
/ 28 мая 2020

У меня есть список уведомлений в верхней части моего веб-сайта.

  1. Каждое уведомление может быть «прочитанным» или «непрочитанным».
  2. Каждое уведомление является интерактивным элементом привязки , перенаправляя пользователя к сообщению, связанному с этим уведомлением.

В настоящее время я использую запрос GET для обработки щелчка пользователя:

@webapp.route('/read')
@webapp.route('/read/<int:notification_id>')
@login_required
def read_notification(notification_id=None):
    if notification_id is None:
        return notifications.read(user=current_user)

    fetched_notifications = notifications.get(current_user)
    if notification is None:
        return fail(404, 'Invalid notification ID.')
    if notification.user.id != current_user.id:
        return fail(403, "You aren't allowed to access this page.")

    notifications.read(id_=notification_id)
    return redirect(notification.action_url or '/exercises')

У меня плохое предчувствие по поводу использования GET запрос на /read, чтобы изменить состояние уведомления. С другой стороны, я не хочу использовать POST (или PATCH), потому что мне потребуется использовать <form> (семантически неверно) или JavaScript (может вызвать запаздывание взаимодействия с пользователем).

Есть ли лучший вариант?

Стек ванильный JavaScript и Flask (Python 3.8).

1 Ответ

1 голос
/ 28 мая 2020

Фактически вы можете перенаправить с помощью метода POST, используя code=307. Для получения дополнительной информации вы можете прочитать это

return redirect(notification.action_url or '/exercises', code=307)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...