2014-04-23 37 views
2

我已經開始使用雲端點API作爲首次Python程序員(具有Java和PHP經驗)。在多個類和多個文件上分割雲終端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東西,但我不知道它...

謝謝!

回答

5

是的,您必須確保api類正確導入,但如果出現問題,您將得到一些運行時異常而不是空的發現文檔。

我可以看到的問題是,您正在使用an_api對象創建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;然後你需要一個叫endpoints.api_server的主模塊。

注意:在Python世界中,單個模塊(文件)的確很長,並且其中有很多類是很常見的;這看起來很奇怪,來自Java或結構良好的PHP。

+0

好像谷歌應該更新自己的文檔一點,嘗試這樣做,它的工作!我將不得不考慮循環依賴問題,來自Java(和一些PHP)的觀點,這對我來說是新的。非常感謝! – Ambroos

+0

您可以舉例說明如何將這些類拆分爲幾個文件,以便端點可以檢測到它們或者這是不可能的? – Burak