如何使用endpoint-proto-datastore返回除模型之外的其他内容

时间:2014-01-15 12:16:57

标签: python-2.7 google-cloud-endpoints endpoints-proto-datastore

我正在通过Google Cloud Endpoints和端点 - 原型数据存储库对API进行编码。

这是我的模特:

class Domain(EndpointsModel):
    _message_fields_schema = ('id', 'name', 'enabled', 'adminEmails')
    name = ndb.StringProperty(required=True)
    enabled = ndb.BooleanProperty(required=True)
    adminEmails = ndb.StringProperty(repeated=True)

这是我的删除方法:

@Domain.method(request_fields=('id',), path='domains/{id}', http_method='DELETE', name='domain.delete')
def delete_domain(self, domain):
    if not domain.from_datastore:
        raise endpoints.NotFoundException('Domain not found.')
    domain._key.delete()
    return domain

我可以返回除模型本身以外的其他内容吗?如何返回特定的HTTP状态代码或类似VoidMessage的内容?

1 个答案:

答案 0 :(得分:4)

您可以在装饰器中定义response_message参数(与更常用的response_fields参数相对)并将其设置为VoidMessage。然后从您的方法而不是模型中返回VoidMessage

from protorpc import message_types

(...)

@Domain.method(request_fields=('id',),
               response_message=message_types.VoidMessage,
               path='domains/{id}',
               http_method='DELETE',
               name='domain.delete')
def delete_domain(self, domain):

    (...)

    return message_types.VoidMessage()

当然你也可以通过这种方式返回任何其他protorpc消息。 据我所知,没有办法定义要返回的HTTP状态代码。