2011-06-27 7 views
0

私は以前の要求を確認して、1回の呼び出しで次のメッセージを取得する快適なサービスを作成したいと考えています。これにより、サーバーへの不要な呼び出しが節約されます。単一の休憩コールで2つの操作を実行することは容認できますか?そうであれば、残りの動詞はgetとputの組み合わせのように見えますが、これを休憩サービスにどのように実装しますか?

これは私にはわかりません。

+0

これは少し不明です。おそらく、あなたはあなたの質問を編集し、2回の呼び出しでどのように見えるのかを示すことができますか? – fumanchu

答えて

1

は、サーバーの状態を転送する一つの方法である、と応じて追加の応答を返す一方で、コンテンツの受信を確認します。プロトコルにはこれを一般的に行うメカニズムはありませんが、これらの結合操作を実行するリソースを作成できます。

GET /Step1 
=> 
200 OK 
Content-Type: application/vnd.hal+xml 
<resource rel="self" href="http://example.org/step1"> 
    <title>Hello User</title> 
    <link rel="next" href="http://example.org/step2" /> 
<resource> 


POST http://example.org/step2 
<!-- Insert Content here --> 
=> 
200 OK 
Content-Type: application/vnd.hal+xml 
<resource rel="self" href="http://example.org/step2"> 
    <title>Thank you for your content</title> 
    <response>This is your answer</response> 
    <link rel="next" href="http://example.org/step3" /> 
<resource> 

私はhalをメディアタイプとして使用しています。これはリンクを含める方法が明確に定義されているためです。また、通常は次のGETを使用するので、私は標準的な "次の"リンク関係を乱用しています。実際に私が提案していることを行うには、おそらくカスタムのリンク関係が必要です。

0

これは私がこの問題に近づいてきた方法です。

REQUEST 
PUT /resource # (or POST) 
Accept: application/xml 
Content-Type: application/xml 

<Resource> 
    <Blah/> 
</Resource> 

RESPONSE 
HTTP 1.1 200 OK # (or 201 Created) 
Content-Type: application/xml 
Content-Location: /resource 

<Resource> 
    <Blah/> 
</Resource> 

私は(HTTP 1.1仕様では、その使用は、PUTやPOSTのために定義されていないと言う)レスポンスのContent-場所の使用に間違っているかもしれないが、それは私が使用してきたものです。私は他人がこれをやっていることを知ることに興味があります。

一般に、私はPOSTやPUTでコンテンツを返すことに問題はないと思います。ここで

ジョン

関連する問題