Web アプリケーション用の REST API を設計しています。
API を設計する際の私の原則は次のとおりです。
- データ モデルの視点ではなく、クライアントユース ケースの視点を使用します。動機: DB スキーマからの抽象化。
- 各スラッシュは、新しいユース ケース/アクションを表します。
アプリケーションには、ユーザー、製品、場所、製品ニュースがあるとしましょう。ユースケースは、ユーザーがある場所から製品ニュースをフォローすることです。場所が空の場合、ユーザーは各場所の製品に関するニュースをフォローします。
製品と場所のリストはよく知られています。
特定の製品と場所の組み合わせのフォロワーとしてユーザーを追加する正しい方法は何ですか?
次の URL に行き着きます。
/product/follow?product=<product_name>[&location=<location name>]
および名前は、将来拡張する柔軟性が高いため、クエリ部分にありますproduct
。location
- PUTの引数: もちろん、このリクエストはべき等です。複数回送信しても、1 回送信した場合とは異なり、他の変更は行われません。
- POSTの引数: リソースが設定される URL は指定しません。
個人的には、APIのユース ケースの原則 (私はこれが正しいと考えています) により、インポテンシールールが最も対応するものであると判断できるため、PUTに近いと言えます。