Por lo general, devolvería el número de registros en resultado como metadatos. No estoy seguro de si es una práctica REST normal, pero no se trata de muchos datos adicionales y es muy precisa. Por lo general, existe una paginación para muchos servicios, no es práctico devolver un gran conjunto de resultados a la vez. Personalmente, me molesta cuando hay paginación para pequeños conjuntos de resultados. Si está vacío, regrese number_of_records : 0
y reserve como lista / matriz vacía books : []
.
{
meta: {
number_of_records : 2,
records_per_page : 10,
page : 0
},
books : [
{id:1},
{id:27}
]
}
EDITAR (pocos años después): la respuesta de Martin Wickman es mucho mejor, aquí hay una "breve" explicación de por qué.
Cuando se trata de paginación, siempre tenga en cuenta la posibilidad de que el contenido o el orden cambien. Como, la primera solicitud llega, 24 resultados, usted devuelve primero 10. Después de eso, se inserta "nuevo libro" y ahora tiene 25 resultados, pero con la solicitud original vendría ordenado en el décimo lugar. Cuando el primer usuario solicita la segunda página, no obtendría un "libro nuevo". Hay maneras de manejar tales problemas, como proporcionar "id de solicitud" que debe enviarse con las siguientes llamadas a la API, luego regresar la página siguiente del conjunto de resultados "antiguo", que debe almacenarse de alguna manera y vincularse a "id de solicitud". La alternativa es agregar un campo como "la lista de resultados ha cambiado desde la primera solicitud".
En general, si puede, intente hacer un esfuerzo adicional y evitar la paginación. La paginación es un estado adicional que puede ser mutado y el seguimiento de dichos cambios es propenso a errores, aún más porque tanto el servidor como el cliente necesitan manejarlo.
Si tiene demasiados datos para procesar a la vez , considere devolver la "lista de identificación" con todos los resultados y detalles para algunos fragmentos de esa lista, y proporcione llamadas de API multi_get / get_by_id_list para recursos.