Для примера, скажем, у меня есть API, который обрабатывает передачу данных о книгах обратно в мобильное приложение. Пользователи могут просматривать список книг и добавлять книги в свой список пожеланий.Rest API - это нормально возвращать отдельные пользовательские данные внутри ресурса?
Мой вопрос заключается в том, что при возвращении одной книги или коллекции книг хорошая практика заключается в том, чтобы включать определенную пользователем информацию в каждый книжный ресурс? Под этим я подразумеваю, что в каждой книге можно включить поле, обозначающее, находится ли эта книга в списке пожеланий пользователей, или будет ли этот список возвращаться отдельно и быть в мобильном приложении для выполнения этой проверки.
Разработчики мобильных приложений предпочли бы позвонить/книги и получить ответ, выглядящий примерно так:
{
"books": [
{
"id":1,
"name": "How to be good at everything",
"price": 3.99,
"in_wish_list": true
},
{
"id":2,
"name": "How to be good at nothing",
"price": 6.50,
"in_wish_list": false
}
]
}
Где я думаю, я предпочел бы, чтобы эти данные разбивались на несколько конечных точек;
/пользователя/29/лист желаний
{
"wishlist": [1,7,9,34,28]
}
/книги
{
"books": [
{
"id":1,
"name": "How to be good at everything",
"price": 3.99
},
{
"id":2,
"name": "How to be good at nothing",
"price": 6.50
}
]
}
Таким образом, мобильное приложение отвечает за определение, если книга находится в пользователях личного список.
Я вижу преимущества внедрения пользовательских данных в ресурс книги, но это не так.
Интересно, как другие управляют подобной ситуацией?
Практически каждый, кто разрабатывает API, имеет дело с такой ситуацией. Взгляните на мой [ответ] (http://stackoverflow.com/questions/39685396/should-i-return-id-of-associated-entity-or-whole-entity/39685477#39685477) на очень похожий вопрос , он также должен применяться здесь. – rorschach
Спасибо, клиентские разработчики всегда хотят получить как можно больше информации в одном запросе/ответе, особенно если конкретное представление в мобильном приложении требует этой информации. Хотя я согласен, что это помогает в интеграции с мобильным приложением, мне кажется, что API специально предназначен для клиента. Я предполагаю, что то, что я делаю, взвешивается между возвращаемыми ответами, адаптированными к представлению мобильных приложений, от ответа на ответы на нескольких конечных точках и принуждением клиентского приложения делать больше работы, делая больше вызовов. – SheppardDigital