2016-03-22 21 views
1

Her kitabın bir yazar için yabancı bir anahtarı olduğu iki kitaplı Kitap ve Yazar var. /books/ son nokta, sistemde kayıtlı tüm kitapların bir listesini döndürür. Şimdi, müşterinin bu listeyi tüketeceğini ve bunu yazara göre gruplandıracağını varsayın. Sunucunun iç içe geçmiş ve yazar tarafından gruplandırılmış verileri döndürmesi için RESTful olur mu? Yanıt için bir gruplama yöntemi istemek için bir standart var mı? mesela (/books/?groupby=author gibi belki bir şey)İstemci tüketimini daha kolay bir şekilde yanıtlamak için nasıl gruplanır

:

// 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'}, 
] 

vs
// 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

Böyle bir işlem için standart olduğunu düşünmüyorum. Gruplama müşteri tarafından yapılabilir veya bahsettiğiniz başka bir yöntem olarak sağlanabilir. –

+0

JSON Pointer'a göz atın. –

cevap

1
Onların yazdım her kitabın veya bir bağlantı için bağlantısını içeren bir yazar kaynak olacaksa beklenebilir

Yazdıkları tüm kitapların bir koleksiyonuna. Her iki durumda da, API'nız, döndürülen JSON'daki kitapları dolduran "? Embed = books" sorgu parametresini destekleyebilir.

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" 
     }, 
    ] 
} 

Bir kenara göre, gerçek bir sistemde, bir kitabın birden fazla yazara sahip olması gerekir.

İlgili konular