Я строю API и пытаюсь решить следующую проблему:
Клиент отправляет заголовок Accept с помощью application / vnd.api + json, поэтому я отвечаю с ресурсом в JSON: API формат.
Приведены, например, следующие таблицы:
которые имеют отношение 1: n - например, один автор написал 100 статей .
Моя цель:
GET/ author
возвращает автора (объект ресурса) с определенным числом статей (объектов ресурса отношений) - например, первые 3 статьи, которые он написал.
В этом формате:
{
"links": {
"self": "http://example.com/author",
"next": "http://example.com/author?page[offset]=2",
"last": "http://example.com/author?page[offset]=10"
},
"data": [
{
"type": "author",
"id": "1",
"attributes": {
"name": "Arthur"
},
"relationships": {
"article": {
"count": 100,
"links": {
"self": "http://example.com/author/1/relationships/article",
"related": "http://example.com/author/1/article"
},
"data": [
{
"type": "article",
"id": "4",
"attributes": {
"title": "1 reason why I should use json:api"
},
"links": {
"self": "http://example.com/article/4"
}
},
{
"type": "article",
"id": "7",
"attributes": {
"title": "2 reasons why I should use json:api"
},
"links": {
"self": "http://example.com/article/7"
}
},
{
"type": "article",
"id": "42",
"attributes": {
"title": "3 reasons why I should use json:api"
},
"links": {
"self": "http://example.com/article/42"
}
}
]
}
}
}
]
}
Моя идея:
Использовать параметр запроса, например
http://example.com/author?relationship[]=article,orderby=date,asc=true,limit=3
tl; dr:
Как правильно ограничивать / разбивать на страницы связанные ресурсы в формате JSON: API?