2016-10-04 14 views
3

私はポート7000でリッスンしているサーバーを作成します。サーバーにはvoid handle_post1()というファンクションを使用して最初のmsgを処理し、void handle_post2() 2回目http request頂きます。以下のような :異なるhandle_postを使用してmsgを処理する方法(C++ REST SDK)

listener.support(methods::POST, handle_post1);//if this is the first msg I receive 
listener.support(methods::POST, handle_post2);//if this is the second msg I receive 

は、私は次のようなコードを試みたが、それは動作しません。 どうすればいいですか?

答えて

1

リスナーはサーバー側でリクエストを処理します。 support()では、特定の要求は処理しませんが、後続のすべての要求に対してハンドラを追加します。

ご質問では、要求の相対的な順序に応じて異なる処理を行います。最初はhandle_post1で処理し、2番目の処理はhandle_post2で処理します。これは、処理がサーバーの状態に依存するようにすることを意味します。

CasablancaはMicrosoftのC++ REST SDKであることを覚えておいてください。そしてRESTは、statelessの処理を意味します。したがって、そこには州に依存した処理のサポートはありません。

あなたが実際に追求したいのは、handle_dispatcher()を使用して、要求に応じた静的変数を維持し、状態によってはhandle_post1またはhandle_post2にさらに委任することができます。しかし、これは本当にアドバイスされていません。 RESTの目的は、異なる要求を別のサーバーにディスパッチできることです。その場合、ディスパッチャーは予期した結果を生成しません。この方法を採用したくない場合は、ステートフルなフレームワークを使用する必要があります。

関連する問題