Как вернуть что-то еще, кроме модели, используя endpoint-proto-datastore

Я кодирую API через конечные точки Google Cloud и библиотеку endpoints-proto-datastore.

Вот моя модель:

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 ответ

Вы можете определить 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 Status Code вернуть.

Другие вопросы по тегам