私は、データベースレイヤーは、単に「フォロー」のブール型列を持つよりもやや複雑な方法で実装する必要があると思います。
3人のユーザーがいるとすれば、ユーザーのうち1人が"following": true
であるとはどういう意味ですか?そのユーザーは何かをフォローしていますか?それだけでは、ユーザーが他のすべてのユーザーに従っていることを意味するわけではありません。
おそらくデータベースレイヤーは、ユーザーとフォローアップの2つの異なる概念から構成されています。ユーザーにはユーザーに関する情報が含まれており、次にユーザーが互いに従うものを指定します。
[
{"username": "jake"},
{"username": "jane"}
]
そして、私たちはジェーンがジェイクに従っていることを言いたくはなく、他の方法で回避:
たちは二人のユーザーを持っていると言います。
次に、その概念を表すために何かが必要です。
{"follower": "jane", "followee": "jake"}
場合は以下を作成または削除に関するAPIの協議を、これは、彼らが作成したばかりさを想像おそらく何ですのは、以下のことを呼ぶことにしましょう。そのため、PUTの代わりにPOST/DELETEを使用しています。ユーザーオブジェクトを変更することはありません。ユーザーオブジェクトは、以下を表す他のオブジェクトを作成します。
あなたが他のユーザーの一つとして、特定のユーザに関する情報、を求める際に、ユーザがその特定のユーザーを次のあなたのようにすれば、あなたが知りたいので、彼らはJSON APIレスポンスで"following": true/false
部分を持っている理由は、 。
ので、上記の例を考えると、ジェーンはGET /api/profiles/jake
で、ジェイクについての情報を要求するだろうというとき、彼女はこのような何か受け取ることになる:ジェイク約プロファイル情報を求めるだろうというとき、しかし
{
"profile": {
"username": "jake",
"bio": "...",
"image": "...",
"following": true
}
}
をジェーン、彼は代わりにこの応答を得るでしょう:
{
"profile": {
"username": "jane",
"bio": "...",
"image": "...",
"following": false
}
}
だから、彼らはリストの情報をAPIレスポンスが実際にそれがcontaiまた、この特定のユーザーについて、データベースに格納されているものではないとして誰が質問したかに基づいて計算されるいくつかの情報。
データベースレイヤは、APIの設計上の考慮事項とは関係ありません。 POST/DELETEとPUTのセマンティクスはAPIレイヤーにのみ関係します。 –
私は同意します。私はそれを例として使用していただけで、不器用なものかもしれません。この場合の「フォロー」とは、「ユーザープロファイル」とは別の概念であり、リンクされた例が私たちにも同様に伝えようとしているものです。ブール値を単にトグルしているのではないかという質問があります。それは、フォローリクエストが行われた前後でプロファイルのレスポンスが異なるように見えるのではなく、フォローされている/フォローされているという理由の1つを説明しようとする考えを私に与えました。 – Frost