Приветствую!
Вопрос составной:
- подскажите/поделитесь, кто как отдает связанные данные через rest api, какие есть лучшие практики;
- как это реализовать в laravel.
Полигоном пусть будет интернет-магазин, который продает книги.
Имеем сущность Книга у которой может быть несколько жанров, к ней можно оставлять комментарии.
Как я это представляю:
1) Отдавать все сразу. Но, если нам потребуются только книги списком (без жанров, к примеру), то ответ получится избыточным.
url /api/v0.1/books
"book": [
{
"id": "1",
"author_id": "3",
"genres": [
{
"id": "1",
"name": "Fantasy"
},
{
"id": "2",
"name": "Drama"
}
],
"comments": [
{
"id": "1",
"user_id": "35",
"text": "Lorem ipsum"
}
]
},
]
2) Отдавать через связанные ресурсы. Но здесь если речь идет об одной книге.
url /api/v0.1/books/1/genres /api/v0.1/books/1/comments
"book": [
{
"id": "1",
"author_id": "3",
"genres": [
{
"id": "1",
"name": "Fantasy"
},
{
"id": "2",
"name": "Drama"
}
]
},
]
3) Отдавать по требованию. Вроде как способ лишен недостатков, но как реализовать в коде - не могу сообразить.
url /api/v0.1/books?expand=genres&comments
"book": [
{
"id": "1",
"author_id": "3",
"genres": [
{
"id": "1",
"name": "Fantasy"
},
{
"id": "2",
"name": "Drama"
}
],
"comments": [
{
"id": "1",
"user_id": "35",
"text": "Lorem ipsum"
}
]
},
]