2012-01-04 10 views
0

クライアントが送信した別のオブジェクトに依存するオブジェクトを取得したいとします。したがって、通常のシナリオでは、まず最初のオブジェクトをPOSTし、次にそれを取得して最終オブジェクトを構築し、GETメソッドで取得する必要があります。どのように私はセッションなしでそれを行うことができますか? (私たちはRESTfulなアプリケーションに入っています)。POSTへのJersey(Restful)応答にデータ(オブジェクト)を追加しますか?

Jerseyを使用したPOST要求に対する応答にオブジェクト(XmlElement)を追加することはできますか? 私は2つの操作(POST、GET)をしなくてもいいです。 HTTPプロトコルと矛盾していますか?

答えて

1

POSTを使用すると、入力ドキュメントを取得して出力ドキュメントを作成することができ、セッションは一切不要です。 POST動詞は実際には「これで何かをする」ことを意味します。 GET、PUT、DELETEよりもはるかに具体的ではありません。しかし、処理操作が「長い時間」(ファジィ概念である)を取る可能性が高い場合は、処理を追跡してそのリソースにクライアントをリダイレクトするPOSTに応答してリソースを作成するほうがよい。そのように、彼らは利用可能になると結果を受け取ることができます。リソースの存在を管理するためにセッションを使用するかどうかはあなた次第ですが、実際にはそれをまったく推奨しません。アクセス制御は、関連するセッションがあるかどうかにかかわらず、ユーザーの識別情報である必要があります。また、処理リソースは、依頼者(および許可者)が利用できる必要があります。セミ・トランジェント・リソース(データベースや有効期限ポリシーなど)の管理に関わるものを慎重に検討し、これらのことを念頭に置いてアプリケーション全体を慎重に設計する必要があります。

+0

あなたの説明をありがとう。私はセッションを使用せず、入力オブジェクトでPOSTを行い、ジャージーレスポンスに別のオブジェクトを出力するだけの場合を考えます。その応答オブジェクトをJersey Responseに追加するにはどうすればよいですか? – Lahniep

+0

@Lahniep:私はオブジェクトにJAXBツーリングを使用し、メソッドを持っています:@POST @Path( "/")@Produces( "application/xml")@Consumes( "application/xml")OutputObject foobar(InputObject input ) '。これはすべて標準のJAX-RSです。 –

+0

これはサーバ側でOKです。しかし、どのようにクライアント側でPOST応答を取得しますか?私の場合、レスポンスはClientResponseオブジェクトに保存されます。そこからOutputObjectを取り出すことは可能ですか? – Lahniep

関連する問題