我正在开发一个同时具有前端(Dart / Polymer)和后端(Python的Endpoints)的App Engine应用。 在本地开发之后,我期望按照以下方式做一些事情:
将应用上传到App Engine。
通过运行为API生成新的发现文档
$> wget -O discovery.json <project>.appspot.com/_ah/api/discovery/apis/...
通过运行生成新的API客户端库
$> generate.dart files -i . -o .
将新客户端库安装在前端lib/
或其他版本中。
上载应用程序。 修改集成测试以指向已部署的应用程序。 验证测试通过。
撤消对集成测试的更改。 重新安装API客户端库的local
版本。 继续发展。
如您所见,这将变得乏味。 任何人都有一些技巧可以简化此过程? 我会以错误的方式处理吗? 也许我应该考虑在已部署的服务器上执行更多操作?
我做了更多的工作,并提出了以下一般的操作序列,这些步骤需要更少的步骤(仅下载发现文档一次且仅部署一次):
endpointscfg.py
与--hostname
参数一起使用可为dev_appserver('localhost:8080')生成发现文档 discoveryapis_generator
生成客户端库 myapi_remote.dart
) endpointscfg.py
与--hostname
参数一起使用可为App Engine运行时生成发现文档(yourproject.appspot.com') discoveryapis_generator
生成客户端库 myapi_remote.dart
) lib/
目录中 myapi.dart
到myapi_remote.dart
myapi.dart
到myapi_local.dart
现在,您已经有了本地和远程客户端库,并且可以根据需要更改符号链接来访问本地或部署的数据。 请注意, endpointscfg.py
为dev_appserver
生成的发现文档指定“ https”,而不是正确的“ http”。 可以在discoveryapis_generator
生成的Dart文件中修复此问题。
实际上,只需更改客户端库的MyApi
构造函数中提供的rootUrl
参数,就可以大大缩短整个工作流程。
当然,这些都是在Python脚本中自动完成的。 我没有在Github上寻找一个,等等,但这是非常基本的东西。 如果有人询问,我会在这里张贴。