0

我正在通过 Google Cloud Endpoints 和 endpoints-proto-datastore 库编写 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 的内容?

4

1 回答 1

4

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

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()

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

于 2014-01-15T22:32:40.173 回答