17

WebAPI プロジェクトに CRUD 機能をかなり落ち着いて実装しました。私は現在、オブジェクトのアーカイブを実装しようとしています (完全に削除するわけではありません) - ARCHIVEHTTP メソッドがあった場合のみです。

2 つのオプションが表示されます。

1)isArchivedアーカイブ可能なすべてのエンティティのプロパティとして持ちます。これは、アーカイブが要求に関連していない場合でも、PUT および POST 要求に含める必要があります。エンティティをアーカイブするにはPUT /api/object/id、isArchived を true に設定して呼び出します。ワイヤーの上でかさばるように見えますが、落ち着いています。

PUT /api/object/id/archive2)本文を必要としないような RPC っぽい URL を持っています。最も効率的ですが、落ち着きがありません。

「API 呼び出しを介して私のものをアーカイブする」スペースでみんなは何をしていますか?

4

4 に答える 4

5

特定のリソースを常にアーカイブし、決して削除しない場合は、DELETE を実際のアーカイブに転用します。削除とアーカイブを本当に区別する必要がある場合は、どちらかを行います

GET /foo/33

200 OK
<foo id="33">blah</foo>


POST /archive
<foo id="33">blah</foo>

201 Created
Location: http://example.org/archive/foo/33

あるいは単に

POST /archive?target=http://example.org/foo/33

201 Created
Location: http://example.org/archive/foo/33
于 2013-04-25T11:30:54.620 に答える
1

私は/api/object/id?archive=trueアプローチを使用します。

ただし、PUT を使用するか POST を使用するかは依存します。PUT を使用する場合、同じ URL への後続の呼び出しは、リソースに関して何も変更しません。POST を使用する場合、実装者は、その URL への後続の呼び出しが実際に状態を変更することを期待しています。(方法は聞かないでください。これには PUT 動詞を使用すると想定しています。)

これは、PUT 操作がべき等でなければならないという事実によるものです。ここのセクション 9.1.2 を参照してください: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

于 2013-04-24T21:07:32.653 に答える
0

おそらく/api/object/id、クエリ パラメータでエンドポイントを使用するので、次のようになります/api/object/id?isArchived=true。使用していた HTTP 動詞は引き続き使用できます。

于 2013-04-24T20:58:28.063 に答える