たとえば、このルート
GET /users/{id}/comments
ユーザーのページにメッセージボードがあり、コメントコンポーネントを使用する予定だとします
投稿された返信用いくつかの投稿でユーザーが使用した場合、これもコメント コンポーネントです。
データベースを設計するとき、これら 2 つのコメント コンポーネントは同じデータ テーブル (ポリモーフィック アソシエーション) を使用します (これについては心配する必要はありません)
ポイントこのルートには矛盾する意味があります:
ユーザーのメッセージ ボード (他の人が投稿したもの) を表示していますか?
それとも投稿内のユーザーの返信を表示していますか?
それでは、この問題を解決し、restful 形式でこれら 2 つのルートを区別する方法を説明します。
申し訳ありませんが、私は乙女座です、、、(でも、この問題に対する最善の解決策を見つけたいとも思っています)実は、この問題には別のシナリオがあります。それは、私をフォローしている人と私をフォローしている人をどのように区別するかということです。
GET /users/{id}/follows
このルートには、私がフォローしている人、または私をフォローしている人が表示されますか?
最初のシナリオでは、ユーザーのメッセージ ボードまたは投稿がユーザーのメッセージ ボードにあるかどうかを識別するフィールドがデータ テーブルに必要だと思います。このフィールドを一時的に
と呼びます。type
,所以可以写成GET /users/{id}/comments/{type}
別のシナリオでは、パラメーターを使用できます
リーリーtype
指定是我关注的还是关注我的,可以写作GET /users/{id}/follows/{type}
もちろん、私がフォローしているものと私をフォローしているものを区別する別の方法もあります
ユーザーにメッセージを残すことと、投稿にメッセージを残すことは、2 つの異なるリソースを操作するために URI によって配置されます。異なるリソースを操作するために同じ URI を使用するのは間違っています。
ユーザーページの掲示板でメッセージを使用できます
フォロワーが私をフォローしています
フォローしているのは私がフォローしているものです
もう少し英語の単語を教えてください。
質問者さんは名前を変えていないようです。実際、名前を変更する最初の理由は、問題を根本的に解決できるためであり、2 つ目の理由は、後続のメンテナーにとって便利であるためです。