Antecedentes¿Cuáles son las mejores prácticas para agregar metadatos a una respuesta RESTful JSON?
Estamos construyendo una API reparador que debe devolver los objetos de datos como JSON. En la mayoría de los casos, está bien devolver el objeto de datos, pero en algunos casos, f.ex. paginación o validación, necesitamos agregar algunos metadatos a la respuesta.
Lo que tenemos hasta el momento
Hemos envuelto todas las respuestas JSON como este ejemplo:
{
"metadata" :{
"status": 200|500,
"msg": "Some message here",
"next": "http://api.domain.com/users/10/20"
...
},
"data" :{
"id": 1001,
"name": "Bob"
}
}
Pros
- podemos añadir metadatos útiles para la respuesta
Contras
- En la mayoría de los casos no es necesario el campo de metadatos, y que añade complejidad al formato JSON
- Ya que no es un objeto de datos más, sino más bien como una respuesta con envoltura , no podemos utilizar la respuesta de inmediato en f.ex backbone.js sin extraer el objeto de datos.
Pregunta
Lo que es de las mejores prácticas para añadir metadatos a una respuesta JSON?
ACTUALIZACIÓN
Lo que tengo hasta ahora de respuestas a continuación:
- Retire la
metadata.status
un retorno del código de respuesta HTTP en el protocolo HTTP en lugar (200, 500 ...) - Agregar mensaje de error al cuerpo de una repsonse http 500
- Para la paginación es natural que algunos metadatos cuenten sobre la estructura de paginación, y datos anidados en esa estructura
- pequeña cantidad de metadatos puede ser añadido a la cabecera HTTP (X-algo)
¿Sabía que su ejemplo no es JSON? – JeremyP
gracias, es actualizado –
¿Podría entrar en más detalles sobre sus posibles casos de uso y por qué el código de estado HTTP y la configuración de los encabezados de respuesta apropiados no serían adecuados? – Charlie