Используйте Flask Restful Google App Engine с Angular - PullRequest
3 голосов
/ 20 июня 2019

Я пытаюсь жениться на этом проекте углового питона и на этом проекте колбы для отдыха .

Directory

- /app
    - css/app.css
    - js/app.js
    - index.html
- app.yaml
- main.py
- appengine_config.py
- vendor.py
- requirements.txt

app.yaml

application: your-application-id-here
version: 1
runtime: python37
api_version: 1
threadsafe: yes

handlers:
- url: /rest/.*
  script: main.APP

- url: /(.+)
  static_files: app/\1
  upload: app/.*

- url: /
  static_files: app/index.html
  upload: app/index.html

main.py

from flask import Flask
from flask.ext import restful


APP = Flask(__name__)
api = restful.Api(APP)


class HelloWorld(restful.Resource):
    def get(self):
        return {'hello': 'world'}


api.add_resource(HelloWorld, '/rest/query/')


@app.errorhandler(404)
def page_not_found(e):
    """Return a custom 404 error."""
    return 'Sorry, Nothing at this URL.', 404


@app.errorhandler(500)
def page_not_found(e):
    """Return a custom 500 error."""
    return 'Sorry, unexpected error: {}'.format(e), 500

Все в папке app/ точно так же, как в проекте python angular.

Если я закомментирую следующее из app.yaml, я могу получить доступ к /rest/query и получить ожидаемый результат.

- url: /(.+)
  static_files: app/\1
  upload: app/.*

- url: /
  static_files: app/index.html
  upload: app/index.html

Однако, когда это не закомментировано, я получаю 404 для /rest/query/ я вижу статическую страницу index.html, загруженную угловыми крючками.Данные не заполняются, так как app.js не может запросить /rest/query.

Как я могу настроить проект отдыха GAE Flask с использованием Angular?

Ответы [ 2 ]

1 голос
/ 20 июня 2019

Как мне пришлось это сделать, я развернул API-интерфейс фляги с базой данных в качестве веб-службы и автономного приложения.

Затем необходимо добавить CORS, чтобы позволить вашему сервису взаимодействовать с другим приложением, в данном случае клиентом с внешним интерфейсом, использующим угловую среду.

Затем я разверну свое угловое приложение, которое будет принимать вызовы API в ваш бэкэнд-веб-сервис.

Мой проект использует sql server и .net core web api для веб-сервера, развернутого в Azure. И приложение Angular развернуто в облаке Google. У меня также есть другое угловое приложение, развернутое на лазурном.

Я работаю над новым API и дБ для моего углового веб-приложения Google Cloud, чтобы упростить его тестирование и разработку.

0 голосов
/ 20 июня 2019

Я не большой поклонник этого обходного пути, но я переместил маршрутизацию с app.yaml на main.py

main.py

from flask import Flask, render_template
from flask.ext import restful


class HelloWorld(restful.Resource):
    def get(self):
        return {'hello': 'world'}


app = Flask(__name__)
api = restful.Api(app)
api.add_resource(HelloWorld, '/rest/query')


@app.route('/')
def root():
    return render_template('index.html')


@app.errorhandler(404)
def page_not_found(e):
    """Return a custom 404 error."""
    return 'Sorry, Nothing at this URL.', 404


@app.errorhandler(500)
def page_not_found(e):
    """Return a custom 500 error."""
    return 'Sorry, unexpected error: {}'.format(e), 500

app.yaml

application: application-id-here
version: 1
runtime: python37
api_version: 1
threadsafe: yes

handlers:
- url: /static
  static_dir: static

- url: /.*
  script: main.app

directory

- /static
    - css/app.css
    - js/app.js
    - partials/...
- /templates/index.html
- app.yaml
- main.py
- appengine_config.py
- vendor.py
- requirements.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...