23

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.

+0

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? –

+0

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

+1

È 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. –

risposta

0

Sottoclasse class JsonModel(EndpointsModel) per riavviarlo.

Problemi correlati