我希望有一个端点获取某种类型的对象并返回不同类型的对象,而不是让它们具有相同的类型。
例如:
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'>)
有没有办法让输入类与返回类不同?
答案 0 :(得分: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()