と の 2 つのリソースを扱うことをお勧めしstudentますclass。
student次の URI を使用して取得できます。
http://home/someapi/v1/students/1
ここで複数形を使用することに注意してください。複数形を使用する理由については、http: //blog.apigee.com/detail/restful_api_design_plural_nouns_and_concrete_names/の記事をお読みください。
studentを 1 つの に登録できる場合class、それはこの学生のプロパティである可能性があるため、次の JSON ドキュメントを返すことができます (例):
{
"student": {
"id": 1,
"firstName": "John",
"lastName": "Doe",
"class": {
"id": 10,
"name": "Room Y"
}
}
}
class次の URIで特定のものを取得できます。
http://home/someapi/v1/classes/10
次の URI を使用して、特定のクラスのすべての生徒を取得できます。
http://home/someapi/v1/classes/10/students
ここで、と の間にNN関係がある場合、JSON での表現に関する私の最初の提案が変更されます。実際には、リレーションはの埋め込みプロパティではなく、リソースのコレクションになるため、次の URI を使用する必要があります。studentsclassesstudentclassclassstudent
http://home/someapi/v1/students/1/classes
「生徒 #1 のすべてのクラスを取得する」という意味です。
classとstudentリソースの両方を公開できます。2 つの異なることを説明しているため、どちらがメインかを決める必要はありません。/studentsとがあると、 とを/classes作成でき、それらをリンクすることができます。studentsclasses
?foo=bar最後に、フィルタリングの目的でクエリ パラメータ ( ) を使用することをお勧めします。