0

將API類分成多個文件時,API Explorer將爲所有資源顯示相同的請求定義。多級API +端點原型數據存儲區

因此,基於如下所示的結構(我的道歉,如果它太長),在API瀏覽器中,既my_api.api_a.testmy_api.api_b.test顯示相同的屬性,attr_b,這是api_server列表定義中的最後一個。如果我更改它並將ApiA放到最後,那麼這兩種方法都會顯示attr_a

任何想法,我做錯了

# model/model_a.py 
    class A(EndpointsModel): 
     attr_a = ndb.StringProperty() 

    # model/model_b.py 
    class B(EndpointsModel): 
     attr_b = ndb.StringProperty() 

    # api/__init__.py 
    my_api = endpoints.api(name='my_api', version='v1') 

    # api/api_a.py 
    @my_api.api_class(resource_name='api_a') 
    class ApiA(remote.Service): 
     @A.method(name='test', ...) 
     ... 

    # api/api_b.py 
    @my_api.api_class(resource_name='api_b') 
    class ApiB(remote.Service): 
     @B.method(name='test', ...) 
     ... 

    # services.py 
    from api import my_api 
    application = endpoints.api_server([ApiA, ApiB]) 

還試圖定義api_server如下圖所示,但並沒有在所有的工作。

application = endpoints.api_server([my_api]) 

回答

2

我已經注意到了類似的問題(這可能是在終端,原數據存儲libary一個bug)當實際方法名(不裝飾的名稱)在不同的API類相同。

不起作用:

class ApiA(remote.Service): 
    @A.method(...) 
    def test(self, model): 
    ... 

class ApiB(remote.Service): 
    @B.method(...) 
    def test(self, model): 
    ... 

作品:

class ApiA(remote.Service): 
    @A.method(...) 
    def test_a(self, model): 
    ... 

class ApiB(remote.Service): 
    @B.method(...) 
    def test_b(self, model): 
    ... 

你跳過你的樣品中的那些行,但是你陳述行爲相匹配我在這種情況下遇到的。

+0

太棒了!就是這樣。非常感謝Scarygami – davidcv5 2014-09-29 22:07:40

+0

@scarygami這與https://github.com/GoogleCloudPlatform/endpoints-proto-datastore/issues/91有關嗎? – bossylobster 2014-09-29 22:57:28

相關問題