是否有一种方法可以通过将数据存储实体作为云端点api实现中的请求/响应消息的一部分来返回?
例如:
我的实体模型定义如下
class District(ndb.Model):
code = ndb.StringProperty(required=True)现在,我想在python中实现云api,如
@endpoints.method(request_message=DistrictMessage, response_message=DistrictMessage, name="DistrictApi.get_by_code")
def get_by_code(self, request):
#get code from District object in request message and
#try to get entity based on it from datastore其中DistrictMessage被定义为
class DistrictMessage(messages.Message):
district = messages.MessageField(District, 1, required=False)上面没有工作,因为地区不是一个messages.Message,而是ndb.Model。我们可以在GAE中做类似的事情,但我无法为python找到它。有可能吗?还是我必须为每个实体定义一个消息类,并执行/从映射?
谢谢你,rizTaak
发布于 2015-09-14 13:17:56
没有办法直接这样做。您可以查看http://endpoints-proto-datastore.appspot.com/以获得一个补充库,该库允许您使用模型而不是消息。
如果你想自己做这件事,你就得这样做。
class DistrictMessage(messages.Message):
code = messages.StringField(1, required=True)
class SomeApiClass(): # incomplete class def for syntax highlighting
@endpoints.method(request_message=DistrictMessage, response_message=DistrictMessage, name="DistrictApi.get_by_code")
def get_by_code(self, request):
# get code from District object in request message and
# try to get entity based on it from datastore
district = District.query(District.code == request.code).get()
if district:
# copy District properties to DistrictMessage kwargs
# ndb.Model.to_dict() can be used here if you filter
# out properties that aren't used in the DistrictMessage
return DistrictMessage(code=district.code)
raise endpoints.NotFoundException()https://stackoverflow.com/questions/32551871
复制相似问题