GAE模块和Google端点

时间:2014-06-10 07:28:16

标签: python google-app-engine module routing google-cloud-endpoints

我正在将GAE应用程序迁移到模块,并且根据Google终端点对我的api模块的路由存在问题。

基本上,我的所有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 ones由foomodule处理
  • API请求(/_ah/spi/xxx)将转到带有404的默认模块。
  • 奇怪的是,在启动应用时,我可以在/_ah/spi/BackendService.logMessages实例的日志中看到{OK 1}的200 OK。

从日志中我也看到了:

  • 之前的logMessage 200确定来自api
  • alpha-dot-api-dot-testapp.appspot.com模块的404来自api
  • 然而,非默​​认模块的200 OK也来自``testapp.appspot.com`

有什么我做错了吗? Google Endpoints在用作模块时需要哪些特殊路由?

1 个答案:

答案 0 :(得分:1)

正如我看到API是默认模块,在docs中说“必须首先上传默认模块”,您还需要将参数“module:default”放在yaml文件中或根本不包含 尝试

appcfg.py update  api/api.yaml www/www.yaml upload/upload.yaml #api first
appcfg.py update_dispatch