Angular: Как обслуживать на Flask и прокладывать маршруты к различным конечным точкам / путям? - PullRequest
1 голос
/ 28 сентября 2019

Я пытаюсь создать приложение Angular с Flask для загрузки страницы входа в приложение Angular.Использование только https://domainname/ работает нормально, но я не могу перенаправить на https://domainname/login.

Шаги для воспроизведения:

  • Очистить кеш браузера
  • Открыть новую вкладку и перейти к https://domainname/login
  • Возвращает 404

Первоначально я использовал другое решение, но, пытаясь все по ходу дела, я закончил с подходом, предложенным в вопросе переполнения стека Python (Flask), обслуживающий файл index.html проекта Angular

Маршруты Flask

@app.route('/<path:path>', methods=['GET'])
def static_proxy(path):
  return send_from_directory('./dist/', path)


@app.route('/')
def root():
  return send_from_directory('./dist/', 'index.html')

Производственная сборка из приложения Angular идет прямо в папку dist.Запрос https://domainname/ попадает на первый маршрут, и фактически я не вижу, как работает второй маршрут.Поэтому, когда я набираю https://domainname/login, он попадает на первый маршрут и, конечно, возвращает 404, потому что в папке 'dist' нет файла с именем входа.Итак, вопрос в том, как проложить путь к таким путям:

  • https://domainname/login
  • https://domainname/contacts
  • https://domainname/contacts/map

Другая конфигурация, которую я пробовал, и она имеет такое же поведение, использует Blueprint.Я не понимаю, почему, все еще не работает с путем /login, потому что в этой версии должен возвращать файл index.html, и он должен работать на стороне клиента, правильно?(здесь угловое приложение построено для статического / дистального)

main.py
from app.api_default import api as default_blueprint
app.register_blueprint(default_blueprint)

...

app/api_default/__init__.py
STATIC_FOLDER = os.path.join(os.pardir, 'static/dist')
api = Blueprint('default', __name__, static_folder=STATIC_FOLDER, static_url_path='')
from . import routes

...

app/api_default/routes.py

@api.route('/', defaults={'path': ''})
@api.route('/<path:path>')
def route_path(path):
  return api.send_static_file('index.html')


@api.route('/')
def home_paths():
  return api.send_static_file('index.html')

1 Ответ

1 голос
/ 29 сентября 2019

Угловые приложения - это одностраничные приложения (SPA).SPA - это веб-приложение или веб-сайт, который взаимодействует с пользователем, динамически переписывая текущую страницу, а не загружая все новые страницы с сервера [ 1 ].

После успешного обслуживанияна странице index.html из Flask и загруженного приложения Angular маршрутизация обрабатывается Angular Router .

См. Маршрутизация и навигация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...