python - Matrícula y reacción
reactjs flask (2)
Estoy creando la aplicación Flask con React, terminé teniendo un problema con el enrutamiento.
El backend es responsable de ser una API, por lo que algunas rutas parecen:
@app.route(''/api/v1/do-something/'', methods=["GET"])
def do_something():
return something()
y la ruta principal que conduce al React:
@app.route(''/'')
def index():
return render_template(''index.html'')
Estoy usando react-router en la aplicación React, todo funciona bien, reaccion-router me lleva a /something
y obtengo la vista renderizada, pero cuando actualizo la página en /something
, la aplicación Flask se encarga de esta llamada y yo Obtener error Not Found
.
¿Cuál es la mejor solución? Estaba pensando en redireccionar todas las llamadas que no están llamando /api/v1/...
a /
no es ideal, ya que volveré a la página de inicio de mi aplicación, no a la vista Reaccionar.
Tal vez como extensión a las respuestas anteriores. Esto resolvió mi problema:
from flask import send_from_directory
@app.route(''/'', defaults={''path'': ''''})
@app.route(''/<path:path>'')
def serve(path):
path_dir = os.path.abspath("../build") #path react build
if path != "" and os.path.exists(os.path.join(path_dir, path)):
return send_from_directory(os.path.join(path_dir), path)
else:
return send_from_directory(os.path.join(path_dir),''index.html'')
from flask import Flask
app = Flask(__name__)
@app.route(''/'', defaults={''path'': ''''})
@app.route(''/<path:path>'')
def catch_all(path):
return ''You want path: %s'' % path
if __name__ == ''__main__'':
app.run()
También puede hacer un esfuerzo adicional y reutilizar el sistema de Flask routing
para hacer coincidir la path
con las mismas rutas que el cliente para que pueda integrar el cliente de datos que necesitará como JSON dentro de la respuesta HTML.