[在深入研究问题之后,似乎问题不在于路由,而在于模块中端点的使用。 GAE Modules and Google Endpoints
的新问题我正在将GAE应用程序迁移到模块,我对路由感到困惑,因为有些查询被正确路由,但并非所有查询都被路由。
我的根文件夹中有以下dispatch.yaml。请注意,该api模块正在使用Google Cloud Enpoints API
application: testapp
dispatch:
- url: "*/foo/*"
module: foomodule
- url: "*/_ah/spi/*"
module: api
- url: "testapp.appspot.com/"
module: default
然后是一个按模块名称的文件夹,每个文件夹都有一个yaml文件,用处理程序定义URL模式,例如: /www/www.yaml为我的默认模块
application: testapp
version: alpha
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /static
static_dir: static
- url: /.*
script: www.app
libraries:
- name: webapp2
version: latest
http://testapp.appspot.com/xxx等查询被正确地重定向到默认值,/ foo / xxx是由foomodule处理的,但API请求(/ _ah / spi / xxx)将使用404进入默认模块。 / p>
但是,我可以在映射到api模块的实例的日志中看到/ OK / spi / BootendService.logMessages 200 OK。这个来自alpha-dot-api-dot -testapp.appspot.com - 而404仅来自testapp.appspot.com。 (注意:我想让我的查询在testapp.appspot.com上运行)
我做错了吗?此外,有没有办法列出服务器上当前使用的配置,以确保它已正确部署?
答案 0 :(得分:2)
很有可能将端点api分解为一个单独的模块并使用dispatch.yaml设置路由,但是使用dev_appserver.py你似乎无法做到这一点。基于代码:https://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/tools/devappserver2/dispatcher.py?r=411#704
if (not path.startswith('/_ah/') or
any(path.startswith(wl) for wl
in DISPATCH_AH_URL_PATH_PREFIX_WHITELIST)):
return True
else:
logging.warning('Skipping dispatch.yaml rules because %s is not a '
'dispatchable path.', path)
return False
以/_ah/
开头的任何路径都不是可分派路径。