私は、MaleResponseMessage
またはFemaleResponseMessage
のいずれかを返すことができる必要がある方法をgoogleが指摘できました。など複数の応答メッセージを使用したGoogleクラウドエンドポイントメソッド
@endpoints.method(message_types.VoidMessage, [MaleResponseMessage, FemaleResponseMessage])
でスーパーメッセージクラスを宣言するためのオプションは、もちろんありますように指定する方法はあり、たとえば、PersonResponseMessage
はMaleResponseMessage
またはFemaleResponseMessage
のいずれかをラップします。しかし、上記のスニペットに類似したものがありますか?
EDIT:
は自分の提案を実装しようとすると、私が捕まってしまいました。 2つのメッセージタイプが共通して持つ唯一のものは、要求です。PersonRequest
の場合、まったく同じ要求フィールド(追加のブール値female=true/false
)があります。 MaleResponseMessage
とFemaleResponseMessage
には共通するフィールドはありません。だから私は、私は応答のために
if request.female : # request.female == True
return get_female(etc, etc)
else: # request.female == False // implies male
return get_male(etc,etc)
をチェック@bossylobsterショー、として、1つのエンドポイント法を使用しています、私は私が???
をチェックするかわからないです
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
@Katedral Pillon、あなたは 'messages.Message'サブクラスが何をしているのか誤解しています。彼らはあなたがプロトコルバッファコンテナ定義を作成するためにそこにあるので、静的フィールドだけをリストすることができ、条件付き 'if'ステートメントは許可されません。 – bossylobster