2016-03-22 6 views
1

BookとAuthorの2つのテーブルがあり、それぞれのブックには著者の外部キーがあります。 /books/エンドポイントは、システムに格納されているすべての書籍のリストを返します。今、クライアントがこのリストを消費し、それを著者別にグループ化するとします。クライアントが必要としないように、サーバーが作成者によってネストされ、グループ化されたデータを返すようにするのは、RESTfulでしょうか?レスポンスのグループ化方法を要求する標準はありますか? (多分/books/?groupby=authorのようなもの)クライアントの消費を容易にするためのレスポンスのグループ化方法

例:

// nested 
[ 
    {'author': 'JK Rowling', books: 
    [ 
     {'title': 'Harry Potter'}, 
     {'title': 'Harry Potter 2'}, 
     {'title': 'Harry Potter 3'}, 
    ] 
    }, 
    {'author': 'J. R. R. Tolkien', books: 
    [ 
     {'title': 'Lord of the Rings'} 
    ] 
    } 
] 
+0

このような操作の標準はないと思います。グループ化はクライアントによって行うこともできますし、言及した別の方法として提供することもできます。 –

+0

JSONポインタを見てください。 –

答えて

1

// flat 
[ 
    {'title': 'Harry Potter', 'author': 'JK Rowling'}, 
    {'title': 'Harry Potter 2', 'author': 'JK Rowling'}, 
    {'title': 'Harry Potter 3', 'author': 'JK Rowling'}, 
    {'title': 'Lord of the Rings', 'author': 'J. R. R. Tolkien'}, 
] 

私は、彼らが書いた各書籍へのリンクまたはリンクのいずれかと著者リソースがあると期待されます彼らが書いたすべての本のコレクションに。どちらの場合でも、APIはクエリパラメータ "?embed = books"をサポートすることができます。返されたJSON内の書籍に値を設定します。

GET /authors/23 
{ 
    "name": "JK Rowling", 
    "_links": [ 
     "books": [ 
      "/books/4", 
      "/books/532" 
     ], ... 
    ] 
} 

GET /authors/23?embed=books 
{ 
    "name": "JK Rowling", 
    "books": [ 
     { 
      "title": "Harry Potter", 
      "author": "/authors/23" 
     }, 
     { 
      "title": "Harry Potter 2", 
      "author": "/authors/23" 
     }, 
    ] 
} 

実際のシステムでは、書籍は複数の作者を持つことができます。

関連する問題