作为新手 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])
我想做的是将 Shelves
和 Book
类放在不同的文件中,因为它们都会变得很长。我试过只移动它们,但这会导致一个空的 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/