首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python从云端返回数据存储实体

用Python从云端返回数据存储实体
EN

Stack Overflow用户
提问于 2015-09-13 16:27:44
回答 1查看 239关注 0票数 0

是否有一种方法可以通过将数据存储实体作为云端点api实现中的请求/响应消息的一部分来返回?

例如:

我的实体模型定义如下

代码语言:javascript
复制
class District(ndb.Model):
    code = ndb.StringProperty(required=True)

现在,我想在python中实现云api,如

代码语言:javascript
复制
 @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被定义为

代码语言:javascript
复制
class DistrictMessage(messages.Message):    
    district = messages.MessageField(District, 1, required=False)

上面没有工作,因为地区不是一个messages.Message,而是ndb.Model。我们可以在GAE中做类似的事情,但我无法为python找到它。有可能吗?还是我必须为每个实体定义一个消息类,并执行/从映射?

谢谢你,rizTaak

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-14 13:17:56

没有办法直接这样做。您可以查看http://endpoints-proto-datastore.appspot.com/以获得一个补充库,该库允许您使用模型而不是消息。

如果你想自己做这件事,你就得这样做。

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32551871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档