GAE模块与Google端点
我正在把一个GAE应用迁移到模块上,但在我的api
模块的路由上遇到了一些问题,这个模块是基于Google Endpoints的。
简单来说,我所有的API请求都被路由到了默认模块,而其他的路由则正常工作。
我的文件结构是:
- /gae
-- dispatch.yaml
-- www/
---- www.yaml
---- [www module files]
-- foo/
---- foo.yaml
---- [foo module files]
-- api/api.yaml
---- api.yaml
---- [foo module files]
dispatch.yaml
application: testapp
dispatch:
- url: "testapp.appspot.com/"
module: default
- url: "*/_ah/spi/*"
module: api
- url: "*/_ah/api/*"
module: api
- url: "*/foo/*"
module: foomodule
我使用以下命令进行部署:
cd gae
appcfg.py update www/www.yaml upload/upload.yaml api/api.yaml
appcfg.py update_dispatch .
我可以看到有3个实例(每个模块一个)被部署。
但是接下来:
- 像http://testapp.appspot.com/xxx这样的请求正确地被路由到了默认模块/实例
/foo/xxx
的请求被foomodule处理- API请求(
/_ah/spi/xxx
)却被路由到了默认模块,并返回了404错误。 - 奇怪的是,当我启动应用时,我可以在
api
实例的日志中看到/_ah/spi/BackendService.logMessages
返回了200 OK。
从日志中我还看到:
- 之前的logMessage 200 OK来自
alpha-dot-api-dot-testapp.appspot.com
api
模块的404错误来自testapp.appspot.com
- 然而,非默认模块的200 OK也来自
testapp.appspot.com
我是不是做错了什么?使用Google Endpoints作为模块时,需要特别的路由设置吗?
1 个回答
1
我看到API是默认模块,在文档中说“默认模块必须先上传”,另外你还需要在yaml文件中加入参数“module: default”,或者根本不包含这个参数。试试看吧。
appcfg.py update api/api.yaml www/www.yaml upload/upload.yaml #api first
appcfg.py update_dispatch