我正在开发一个带有 AngularJS 前端 + GAE 后端(Python 和 Flask)的应用程序。我在设置 app.yaml 以路由使用 Flask-Restless 扩展创建的 API 端点时遇到了麻烦。我的 app.yaml 文件如下所示:
application: myAppID
version: 1
runtime: python27
threadsafe: true
api_version: 1
handlers:
# handler 1
- url: /favicon\.ico
static_files: favicon.ico
upload: favicon\.ico
# handler 2
- url: /api/.*
script: main.app
# handler 3
- url: /test
script: main.app
# handler 4
- url: (.*)/
static_files: app\1/index.html
upload: app #this is the frontend folder for Angular
# handler 5
- url: (.*)
static_files: app\1
upload: app #this is the frontend folder for Angular
在 Angular 中,路由配置如下所示:
App.config(['$stateProvider', '$locationProvider', '$urlRouterProvider', 'RouteHelpersProvider',
function ($stateProvider, $locationProvider, $urlRouterProvider, helper) {
'use strict';
$locationProvider.html5Mode(false);
// default route
$urlRouterProvider.otherwise('/app/dashboard');
// other routes ...
}]);
main.py 文件如下所示:
from flask import Flask
import os
from werkzeug import debug
from flask import jsonify
from google.appengine.ext.webapp.util import run_wsgi_app
app = Flask('myApp')
if os.getenv('SERVER_SOFTWARE') and os.getenv('SERVER_SOFTWARE').startswith('Google App Engine/'):
app.debug = False
else:
app.debug = True
if app.debug:
app.wsgi_app = debug.DebuggedApplication(app.wsgi_app, True)
@app.route('/test')
def test():
return jsonify(test={"json": "test"})
import models
run_wsgi_app(app)
models
是包含 Flask-SQLAlchemy 模型和 Flask-Restless 端点的文件。
Angular 部分正确加载,例如此 URL 工作正常:
A) http://localhost:8080/#/app/dashboard
但是 GAE 后端部分对这些 URL 的响应是 500 错误:
B) http://localhost:8080/api/person
C) http://localhost:8080/test
如果我删除handler 4
然后和URL 工作正常handler 5
,但 Angular 前端停止工作。B
C
我做错了什么?