1

我想要一个端点来获取某种类型的对象并返回不同类型的对象,而不是让它们具有相同的类型。

例如:

class SomeClass(EndpointsModel):
    name = ndb.StringProperty()

class OtherClass(EndpointsModel):
    otherName = ndb.StringProperty()

@SomeClass.method(path='mymodel', http_method='POST', name='mymodel.insert')
def MyModelInsert(self, my_model):
    my_model.put()
    otherModel = OtherClass(otherName='someothername')
    return otherModel

目前我得到:

ServerError (Method MyApi.MyModelInsert expected response type <class '.SomeClass'>, sent <class '.OtherClass'>)

有没有办法让输入 Class 与返回 Class 不同?

4

1 回答 1

3

您可以response_message在方法装饰器中提供参数,但该参数必须是 ProtoRPC 消息类而不是 EndpointsModel。

ProtoModel您可以通过classmethod从 EndpointsModel 获取消息类。

而且您必须从您的方法返回 ProtoRPC 消息而不是 EndpointsModel,因为该库不会自动为自定义响应类进行对话。您可以使用ToMessage模型的方法来执行此操作。

总而言之,您将拥有以下代码(未经测试):

@SomeClass.method(path='mymodel',
                  http_method='POST',
                  name='mymodel.insert'
                  response_message=OtherClass.ProtoModel())
def MyModelInsert(self, my_model):
    my_model.put()
    otherModel = OtherClass(otherName='someothername')
    return otherModel.ToMessage()
于 2015-01-29T13:50:39.033 回答