Durante l'utilizzo di endpoint ricevo strani errori da protorpc
. In questo codice:Endpoint API - errore di validazione protorpc
class Application(EndpointsModel):
_message_fields_schema = ('id', 'name')
created = ndb.DateTimeProperty(auto_now_add=True)
name = ndb.StringProperty()
roles = ndb.IntegerProperty(repeated=True)
updated = ndb.DateTimeProperty(auto_now=True)
owner = ndb.KeyProperty(kind='User')
@API.api_class(resource_name="application")
class ApplicationApi(protorpc.remote.Service):
@Application.method(http_method="GET",
request_fields=('id',),
name="get",
path="applications/{id}")
def ApplicationGet(self, instance):
if not instance.from_datastore:
raise endpoints.NotFoundException("Application not found.")
return instance
@Application.query_method(http_method="GET",
query_fields=('limit', 'order', 'pageToken'),
name="list",
path="applications")
def ApplicationList(self, query):
return query
quando chiamo application.get()
errore è la seguente: (full trace here):
TypeError: Can only copy from entities of the exact type Application. Received an instance of Application.
e per chiamare application.list()
errore è la seguente: (full trace here):
ValidationError: Expected type
<class '.Application'>
for field items, found<Application name: u'test'>
(type<class '.Application'>
)
Cosa potrebbe causare questo? I miei altri modelli con praticamente lo stesso codice (solo proprietà diverse) funzionano bene.
Queste tracce sembrano utilizzare un'istanza di 'Applicazione' anziché l'oggetto di classe (tipo)' Applicazione'. Sei sicuro di non usare 'Application()' da qualche parte nel tuo codice? –
Appena ricontrollato, non lo sto usando da nessuna parte - tutto il codice pertinente è nella domanda. Sto estendendo una classe 'ApplicationApi (BaseRemoteService)', ma nessuna menzione dell'applicazione, e c'è un metodo POST api (che funziona ...), ma anche se rimuovo tutto ciò che sto ancora ricevendo gli stessi errori con solo il codice dall'OP. – Sasxa
È uno sparo al buio, ma prima della sottoclasse di 'EndpointsModel', ha fatto la sottoclasse' Applicazione' 'ndb.Model'? Prova a fare il giro di tutte le entità di "Applicazione" e a fare di nuovo "mettere" su di loro. Sto pensando che la chiave che passi dentro recuperi l'entità ma qualcosa sulla catena ereditaria sta rendendo i campi '__class__' non corrispondenti. –