我有一個谷歌可能enpoint方法,我需要能夠返回MaleResponseMessage
或FemaleResponseMessage
。是否有指定例如與谷歌雲端點方法與多個響應消息
@endpoints.method(message_types.VoidMessage, [MaleResponseMessage, FemaleResponseMessage])
當然有聲明的超級郵件類的選項的方式,比方說,PersonResponseMessage
包裹要麼MaleResponseMessage
或FemaleResponseMessage
。但是有沒有類似於上面的代碼片段?
編輯:
試圖執行我自己的建議,我被卡住了。這兩種消息類型唯一共同的就是請求:對於PersonRequest
,完全相同的請求字段(其他布爾值爲female=true/false
)。 MaleResponseMessage
和FemaleResponseMessage
沒有共同的字段。所以我用一個端點法,如@bossylobster節目,在那裏我檢查
if request.female : # request.female == True
return get_female(etc, etc)
else: # request.female == False // implies male
return get_male(etc,etc)
對於響應,我需要像
class PersonResponse(messages.Message):
if ??? :
item = messages.MessageField(MaleResponseMessage,1)
else:
item = messages.MessageField(FemaleResponseMessage,1)
我不知道該怎麼檢查???
的。首先,我想過isinstance
或type
。但我該怎麼做?以下工作?
class PersonResponse(messages.Message):
if type(Message()) == MaleResponseMessage :
item = messages.MessageField(MaleResponseMessage,1)
else:
item = messages.MessageField(FemaleResponseMessage,1)
我喜歡你的問題是你似乎真的知道你的東西。你只是停留在這個問題上。 :)請記住分享您的最終解決方案,如果@bossylobster或其他人無法提供幫助,但無論如何你都能到達那裏。 – learner 2013-03-20 18:20:11
@Katedral Pillon,你誤解了'messages.Message'子類正在做什麼。他們在那裏爲你創建一個協議緩衝區容器定義,所以你只能列出靜態字段,不允許有條件的'if'語句。 – bossylobster 2013-03-22 20:48:28