コレクションが/items/
あり、クライアントがこのコレクションに新しいアイテムを追加できるようにしたいとします。Railsに触発されて、私は次のようになりました。リソースを追加するだけ/items/new
で、アイテムを追加したい人が最初に発行GET /items/new
し、空のエンティティ(おそらくいくつかのデフォルト値が設定されている)を受け取り、次に目的のフィールドと問題を入力しますPOST /items/
。
- このアプローチは真のRESTAPIに適していますか?何を改善/やり直すことができますか?
- 突然このアプローチが良い場合(そしてそうでない場合はとにかく):
各アイテムに必須フィールドTitleがあるとします。に応答してデフォルト値を返すのはおそらくあまり良くありません
GET /items/new
。この場合、何が良いですか?null
タイトルを返し、POSTが空のときにエラーを返すには?リソースのコンストラクターのようなロジックを実装するnew
には、たとえばクエリ文字列で必須フィールドを要求しますか?他に何かありますか?
UPD。明確にするために、を使用することは、 new
「追加」を「割り当て」と「コンテンツの書き込み」に分割することではありません。これは、でデータストアに対するアクションが実行されないためGET /items/new
です。これは、エンティティ設計の柔軟性を実現する方法を意味します。リッチクライアントは、新しいものに応じて入力フィールドを動的にレンダリングできます。それは理にかなっていますか?または、契約を修正する必要があり、このような変更のためにAPIをバージョン管理する必要がありますか?