Я создаю приложение Flask с React, у меня возникла проблема с маршрутизацией.Flask and React routing
Бэкэнд отвечает быть API, поэтому некоторые маршруты выглядеть следующим образом:
@app.route('/api/v1/do-something/', methods=["GET"])
def do_something():
return something()
и основной маршрут, который ведет к React:
@app.route('/')
def index():
return render_template('index.html')
Я использую react-router в React приложение, все работает нормально, реагирует маршрутизатор принимает меня к /something
, и я получаю визуализированный вид, но когда я обновляю страницу на /something
, тогда приложение Flask позаботится об этом вызове, и я получаю ошибку Not Found
.
Какое оптимальное решение? Я думал о перенаправлении всех вызовов, которые не звонят /api/v1/...
, до /
, это не идеально, поскольку я верну домашнюю страницу своего приложения, а не визуализирую представление React.
Самый быстрый и простой способ, если вы не хотите, чтобы ваш backend обрабатывал URL-адреса, нельзя использовать историю HTML5 history. Деактивация этого приведет к URL-адресам hashbang, например '/ #/something', и их перезагрузка всегда будет запускать представление'/'на сервере. В противном случае вам нужно либо обрабатывать запросы на своем сервере, либо перенаправлять их в свое приложение-ответ, что, в свою очередь, необходимо проанализировать запрос и инициировать изменение местоположения, если запрошенный URL не является '/'. – sthzg
Это похоже на какое-то решение, спасибо! – knowbody
Я не думаю, что это хорошее решение. Это 2015 год, вы действительно должны использовать API истории. –