Как вернуть что-то еще, кроме модели, используя 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 вернуть.