Por lo general, devolvería el número de registros del resultado como metadatos. No estoy seguro de si esa es la práctica normal de REST, pero no son muchos datos adicionales y son muy precisos.
Por lo general, hay paginación para muchos servicios, no es práctico devolver un gran conjunto de resultados a la vez. Personalmente estoy molesto cuando hay paginación para pequeños conjuntos de resultados.
Si está vacío, devuelve number_of_records : 0
y los libros como lista vacía / matriz books : []
.
{
meta: {
number_of_records : 2,
records_per_page : 10,
page : 0
},
books : [
{id:1},
{id:27}
]
}
EDITAR (unos años más tarde):
La respuesta de Martin Wickman es mucho mejor, aquí hay una explicación "corta" de por qué.
Cuando se trata de paginación, siempre tenga en cuenta la posibilidad de que los contenidos o el orden cambien. Al igual que, la primera solicitud llega, 24 resultados, usted regresa el primer 10. Después de eso, se inserta "nuevo libro" y ahora tiene 25 resultados, pero con la solicitud original, se ordenaría en el décimo lugar. Cuando el primer usuario solicita la 2ª página, no obtendría "libro nuevo". Hay formas de manejar tales problemas, como proporcionar "id de solicitud" que debe enviarse con las siguientes llamadas a la API, y luego regresar a la página siguiente del conjunto de resultados "antiguo", que debe almacenarse de alguna manera y estar vinculado 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 esforzarse más y evite la paginación. La paginación es un estado adicional que se puede mutar y el seguimiento de dichos cambios es propenso a errores, incluso más porque el servidor y 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 de una parte de esa lista, y proporcione las llamadas a la API multi_get / get_by_id_list para el recurso.