私はFooのためのRESTリソースを持っています。私は新しいFooを作るためにPOSTを実行できるようにしたいと思います。このREST URIを構築する適切な方法は?
FozはFizzとBuzzの2つのサブタイプしか存在しません(モデルはFooFizzとFooBuzzで、どちらもFooを拡張しています)。すべてのFoosはFizzまたはBuzzのいずれかです。他のモデルのほとんどはこのパターンにも従います(FizzとBuzzのサブタイプで一般的です)。中期的には、Foosに新しいタイプが追加されることはありません。長期的には、新しいタイプが追加される前にこのアプリケーションが廃止される可能性が高くなりますが、その可能性は存在します。
いずれにせよ、私はFoosを扱うために思いついたいくつかのURIスキームを紹介します。
POST/FOO?タイプ=
POST/FOO /フィズ
POST /フィズ/ fooの
POST/FOO-フィズ
POSTフィズ/ foo/{foo-id}/fizz
私はこのことについて考えています:
(1)は、クエリ文字列が適切に形成されていることに依存しているため、不要なクライアント - サーバー結合である可能性があります。しかし、それは私にとって最も理にかなっています。
個々のFooで操作を実行するためにgo/foo/{foo-id} URIを持つことができるため、(2)および(3)は望ましくありません。
(4)Fizzesを必要とし、URIツリー
の完全に別の枝になることオースト(5)まともなスキームそれが台無しURIツリーのかもしれませんがのように思えます。
あなたが正しいと思います。おそらく私は情報伝達のためにURIにあまりにも頼っていたでしょう。 – smcg
クエリパラメータをPOSTと混合するのは好きではありません。私がそれを見るたびに、私は誤ったデザインがあると思う。 :-) –