Многокласов API + Endpoints Proto Datastore

Когато разделя API класовете на множество файлове, API Explorer показва една и съща дефиниция на заявка за всички ресурси.

Така че въз основа на структурата, показана по-долу (моите извинения, ако е твърде дълга), в API Explorer, както 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])

person davidcv5    schedule 29.09.2014    source източник


Отговори (1)


Забелязах подобни проблеми (които може да са грешка в библиотеката endpoints-proto-datastore), когато действителните имена на методите (а не името в декоратора) са еднакви в различни 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):
    ...

Пропуснахте тези редове във вашата извадка, но поведението, което посочвате, съответства на това, което срещнах в този сценарий.

person Scarygami    schedule 29.09.2014
comment
Страхотно! Това беше. Благодаря много Scarygami - person davidcv5; 30.09.2014
comment
@scarygami Това свързано ли е с github.com/GoogleCloudPlatform/endpoints-proto-datastore/ проблеми/? - person bossylobster; 30.09.2014