この質問はおなじみのように聞こえると思いますが、私はRESTに困惑しているもう1人のプログラマーです。
StateAからStateBに移行する従来のWebアプリケーションがあります。ユーザーがStateB(のURL)にアクセスした場合、彼が以前にStateAにアクセスしたことを確認したいと思います。伝統的に、私はセッション状態を使用してこれを行います。
RESTではセッション状態が許可されていないので、これをどのように達成できますか?
2 RESTこれに対する答えは、具体的に何をしようとしているのかに応じて異なります。
本当に要求ベースの状態を管理しようとしている場合(ユーザーがマルチスクリーンウィザードやその他のナビゲーションベースのワークフローを使用しているときなど)、REST答えはその状態ですリクエスト/レスポンスごとに(非表示のテキストフィールド、クエリ文字列、またはPOSTデータがフォームに格納されているなどのデータを使用して)送信されます。これはMartinの実装です。ファウラーの「クライアント状態」のデザインパターン(詳細は彼の著書のエンタープライズアプリケーションアーキテクチャのパターン;参照) 参照はこちら =)。
一方、サーバー上でショッピングカートなどの新しいオブジェクトを管理しようとしている場合、REST答えは、実際に新しいオブジェクトを作成しているということです。直接URLで他のエンティティと同様にアクセスできるエンティティ。この新しいエンティティをデータベースまたはアプリケーションメモリ(従来のSessionオブジェクトなど)に保存するかどうかは任意ですが、どちらの方法でも、新しいオブジェクトはサーバーの「状態」について、そしてユーザーが対話するための新しいエンティティの作成について。