python reactjs flask url-routing

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'')


Usamos URLs para todos .

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.