Сложные маршруты для Flask-Restless (например, забыли пароль)

Я хочу создать маршрут для функции «забыли пароль» при использовании Flask-Restless. Моя идея заключалась в том, что запрос может выглядеть так:

POST /api/user/<id>/forgot_password

и Flask-Restless отправит этот запрос по пользовательскому маршруту «забыли пароль», который я предоставил. Таким образом, я мог бы определить свои собственные сложные операции здесь с объектом пользователя (сохранение промежуточных материалов в БД, ссылка для сброса пароля электронной почты и т. д.).

Мне не удалось найти такую ​​функциональность в документах для Flask-Restless. Кроме того, при попытке сделать быстрый (хакерский) отдельный маршрут (за пределами Flask-Restless), который просто соответствовал указанному выше маршруту, Flask-Restless все же принял запрос и вернул 405 (метод не разрешен).

Можно представить такую ​​​​функциональность и для других сложных операций (например, изменить пароль, изменить адрес электронной почты).

Можно ли как-то реализовать эту схему маршрутизации? Если да, то как?

Если нет, то что может быть альтернативой? Обычный маршрут в отдельном чертеже?


person haeger    schedule 20.02.2015    source источник
comment
Я не знаю flask-restless, но в flask это выполнимо. Вы уверены, что включили methods=['POST'] в свой вызов apimanager.create_api()? Это похоже на то, что вы забываете.   -  person Daniel Timberlake    schedule 20.02.2015
comment
Я уверен, что POST включен и работает. На самом деле проблема заключается в том, чтобы иметь возможность добавлять пользовательские функции к автоматически сгенерированным конечным точкам Flask-Restless. Как вы упомянули, это возможно во Flask, но создание отдельных маршрутов немного противоречит цели Flask-Restless.   -  person haeger    schedule 20.02.2015
comment
На мой взгляд, использование POST для сброса пароля кажется неправильным. Подробнее см. здесь. Если вместо этого вы реализуете это через PUT, restless должен работать без изменений.   -  person vikramls    schedule 21.02.2015
comment
@vikramls Независимо от используемого глагола вопрос остается в силе. Простой PUT на самом деле не работает, так как я не хочу напрямую обновлять модель новым паролем. В этом случае я хочу отправить пользователю электронное письмо со ссылкой для сброса пароля, но это может отличаться (например, если вы хотите изменить маршрут электронной почты, который отправляет электронные письма с подтверждением, хранит данные в БД и т. д.). (Немного OT: я использовал POST из-за семантики, найденной здесь)   -  person haeger    schedule 21.02.2015


Ответы (1)


Это невозможно в расширении Flask-Restless. Можно было бы добавить его вручную.

Я сделал запрос функции для этого в системе отслеживания проблем Flask-Restless, и это было определено автором как выходящее за рамки.

person haeger    schedule 17.04.2015