如何使用ProtoRPC定义像DateTimeField这样的用户定义的MessageField?

时间:2013-07-23 10:30:24

标签: android python google-cloud-endpoints protorpc

我想创建一个像DateTimeField这样的用户定义的MessageField。我创建了一个如下:

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 =“”。

     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 个答案:

答案 0 :(得分:1)

请参阅Endpoints Exceptions文档。

例如,发送400

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

一些更有帮助的答案:
Returning custom HTTP error reasons in Google Cloud Endpoints
How can one subclass endpoints.ServiceException?