Как определить пользовательский MessageField, как DateTimeField, используя ProtoRPC?

Я хотел бы создать пользовательский MessageField, например DateTimeField. Я создал один следующим образом:

class ErrorMessage(Message):
    code = StringField(1, required=True)
    message = StringField(2, required=True)
    reference = StringField(3, required=True)

class ErrorField(MessageField):
    message_type = ErrorMessage

    @util.positional(3)
    def __init__(self, number, **kwargs):
        super(ErrorField, self).__init__(self.message_type, number, **kwargs)

Звучит правильно? Я использовал этот ErrorField как одно из полей в классе ответа конечных точек облака Google. Он хорошо работает с клиентом JS, но при использовании с android объект error получает в формате error="".

     return  MyResponse(
        isSaved=False,
        error=ErrorMessage(code="200", message=simplejson.dumps(form.errors), reference="form validation error")
       )

     from protorpc.messages import Message, StringField, MessageField

     class MyResponse(Message):
        isSaved = StringField(1, required=True)
        error = ErrorField(2, required = False)

Мне нужен общий класс Error для моих конечных точек, для этого мне нужен собственный ErrorField. Заранее спасибо.

1 ответ

Решение

Смотрите документацию Исключения конечных точек.

Например, чтобы отправить 400

raise endpoints.BadRequestException('A bad thing happened.')

Еще несколько полезных ответов:
Возврат пользовательских причин ошибок HTTP в конечных точках Google Cloud
Как можно создать подкласс конечных точек.ServiceException?

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