API クラスを複数のファイルに分割すると、API エクスプローラーはすべてのリソースに対して同じ要求定義を表示します。
したがって、以下に示す構造に基づいて (長すぎる場合はお詫びします)、API エクスプローラーで、my_api.api_a.testとmy_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])