协议 RPC 消息,empty/not 设置重复字段
Protocol RPC messages, empty/not set repeated field
我正在使用 Google Cloud Endpoints 和 protorpc 消息 (python),我创建了端点来编辑用户信息,如何检查用户何时发送空值以及何时发送空值发送?客户端可以发送 {languages: ''} 以删除语言(设置为 None)或发送 {} 不执行任何操作。 UserEditMessage.languages 被检查为重复所以消息总是 returns [] 无论字段是否未设置或设置为 [],对于非重复字段 {languages: ''} returns ''和 None 代表 {}。
示例:
>>> t1 = UserEditMessage()
>>> t1
<UserEditMessage
languages: []>
>>> t2 = UserEditMessage(languages=[])
>>> t2
<UserEditMessage
languages: []>
>>> t1 = UserEditMessage()
>>> t1.first_name # None
>>> t2 = UserEditMessage(first_name='')
>>> t2.first_name
''
不幸的是,这现在是系统中的 flaw。如果您认为有必要,您可以通过将重复字段放入其自己的消息中并检查消息是否存在作为列表存在的代理来解决它。
我正在使用 Google Cloud Endpoints 和 protorpc 消息 (python),我创建了端点来编辑用户信息,如何检查用户何时发送空值以及何时发送空值发送?客户端可以发送 {languages: ''} 以删除语言(设置为 None)或发送 {} 不执行任何操作。 UserEditMessage.languages 被检查为重复所以消息总是 returns [] 无论字段是否未设置或设置为 [],对于非重复字段 {languages: ''} returns ''和 None 代表 {}。
示例:
>>> t1 = UserEditMessage()
>>> t1
<UserEditMessage
languages: []>
>>> t2 = UserEditMessage(languages=[])
>>> t2
<UserEditMessage
languages: []>
>>> t1 = UserEditMessage()
>>> t1.first_name # None
>>> t2 = UserEditMessage(first_name='')
>>> t2.first_name
''
不幸的是,这现在是系统中的 flaw。如果您认为有必要,您可以通过将重复字段放入其自己的消息中并检查消息是否存在作为列表存在的代理来解决它。