2016-10-19 1 views
0

Lassen Sie uns sagen, dass ich ein Modell mit zwei Pflichtfelder haben:Endpunkte-Proto-Datenspeicher - Feld auf POST erforderlich sein sollte, aber GET nicht

class ExampleModel(EndpointsModel): 
    attr1 = ndb.StringProperty(required=True) 
    attr2 = ndb.StringProperty(required=True) 

Dann möchte ich Endpunkte-Proto-Datenspeicher verwenden, auf abfragen entweder attr1 oder attr2:

@ExampleModel.query_method(query_fields=('attr1', 'attr2'), 
          path='example', name='list') 
    def example_list(self, query): 
     return query 

Dies schlägt fehl, wenn ich nur eines der Felder - von der API Explorer ist es ein Pflichtfeld, aber die API selbst zurückgibt:

{ 
"error": { 
    "code": 400, 
    "errors": [ 
    { 
    "domain": "global", 
    "message": "Error parsing ProtoRPC request (Unable to parse request content: Message CombinedContainer is missing required field attr2)", 
    "reason": "badRequest" 
    } 
    ], 
    "message": "Error parsing ProtoRPC request (Unable to parse request content: Message CombinedContainer is missing required field attr2)" 
} 
} 

Offensichtlich konnte ich sie als nicht erforderlich markieren, dann die Prüfung innerhalb des Anwendungscodes - aber ich fragte mich, ob jemand anderes eine bessere Lösung gefunden hatte.

Vielen Dank

Antwort

0

Dies ist eine alte Frage, aber ich lief in die gleiche Verwirrung. This war die Antwort, die ich fand. Im Grunde, wenn Sie etwas machen wollen, das auf Post angewiesen ist, aber nicht bekommen, müssen Sie eine benutzerdefinierte Proto-Klasse machen. Das kann nur mit Methode und nicht Query_Methode verwendet werden.

+0

Schätze, dass du dir die Zeit genommen hast, hier zu posten. –

+0

Kein Problem, hast du es am Ende benutzt? – turtle

+0

Ich habe nicht ... Ich habe einfach zu viele Dinge wie diese gefunden, die vielleicht Antworten hatten, aber nicht offensichtlich waren, und endete damit, Tech zu wechseln. –

Verwandte Themen