python - 将 Cloud Endpoint API 拆分为多个类和多个文件

标签 python google-app-engine google-cloud-endpoints

作为新手 Python 程序员(具有 Java 和 PHP 经验),我已经开始使用 Cloud Endpoint API。

我想将所有内容放在一个 API 中,但将不同的资源调用拆分到不同的文件中。文档以此为例:

an_api = endpoints.api(name='library', version='v1.0')

@an_api.api_class(resource_name='shelves')
class Shelves(remote.Service):
   ...

@an_api.api_class(resource_name='books', path='books')
class Books(remote.Service):
   ...

endpoints.api_server([an_api])

我想做的是将 ShelvesBook 类放在不同的文件中,因为它们都会变得很长。我试过只移动它们,但这会导致一个空的 API 发现文档,因为当 API 启动时这些文件可能没有加载/运行/解释。

我该如何解决这个问题?我有一种感觉,它会与 import 相关,但我想不通...

谢谢!

最佳答案

是的,您必须确保正确导入了 api 类,但如果这有问题,您将得到一些运行时异常而不是空的发现文档。

我能看到的问题是您正在使用用于装饰实际 API 类的 an_api 对象创建 api 服务器。您应该改为执行以下操作:

an_api = endpoints.api(name='library', version='v1.0')

@an_api.api_class(resource_name='shelves')
class Shelves(remote.Service):
   ...

@an_api.api_class(resource_name='books', path='books')
class Books(remote.Service):
   ...

endpoints.api_server([Shelves, Books])

然后从这个转到多模块 API,您将很容易遇到循环依赖情况(这是 Python 无法处理的)。然后,您需要一个通用模块,您可以在其中定义 an_api;一组 API 模块,实现了 API 的一部分,所有这些都 import 公共(public)模块;然后您需要一个调用 endpoints.api_server 的主模块。

注意:在 Python 世界中,单个模块(文件)确实很长并且其中包含很多类的情况并不少见;这对于 Java 或结构良好的 PHP 来说似乎很奇怪。

关于python - 将 Cloud Endpoint API 拆分为多个类和多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23241390/

相关文章:

python - AppEngine BlobStore 上传失败,请求在开发环境中有效

java - 从 Google 应用引擎提供 dart Web 应用程序

python - 如何阻止 QTreeWidget 移动滚动位置?

python - 删除 Google App Engine 中某个种类的所有数据

python - Pytest:使用没有副作用的函数设置模拟

node.js - 在 Google Cloud App Engine 上运行 GraphQL 服务器

google-cloud-storage - 如何上传文件到云存储?

android - 对 Google App Engine 和 Google Cloud Endpoints 感到困惑

python - Tensorflow 显式设备要求错误

python - 反转负整数会导致意外结果