Crea una API REST con JSON SERVER

Es un requerimiento muy común de una aplicación que esta se conecte a una fuente de datos, porque después de procesarlos, estos se van a mostrar en pantalla para que el usuario pueda interactuar con ellos, ya sea un reporte de contabilidad, una lista de contactos o un video en streaming.
En tiempos recientes estas fuentes de datos se modelan como una API REST porque esto permite consumirla fácilmente desde distintos dispositivos y clientes usando el formato JSON.
Cuando estamos en la fase de desarrollo muchas veces la fuente de datos final aún no existe o no está completa, por lo que es necesario contar con una alternativa para que esto no bloqueé nuestra habilidad para escribir las partes de la aplicación que dependen de estos datos.

Prensentando JSON Server

JSON Server es paquete npm que nos da la posibilidad de crear una API REST basada en JSON en nuestro servidor local, ideal para todos aquellos que necesitan un back-end rápido para pruebas y prototipos.
La documentación indica que podemos hacerlo en menos de 30 segundos, hagamos el intento:
Instalar desde npm
Crear un archivo db.json
Este archivo sirve como almacén local de datos, el servidor leerá archivo para responder a las peticiones de los clientes.
Iniciar el servidor
Esto inicia un servidor local en el puerto 3000 por default.
Hacer peticiones
Todo listo para interactuar con la API, podemos hacer una petición GET
GET http://localhost:3000/posts/1
Y obtener la siguiente respuesta:
Eso fue bastante rápido, dependiendo de tu experiencia previa con node y npm esto si podría lograrse en menos de 30 segundos, tiempo record.
Métodos
JSON Server soporta los métodos HTTP más comunes incluyendo GETPOSTPUTPATCH y DELETE
Es importante mencionar que:
– Los cambios son persistidos en el archivo db.json automáticamente
– Las peticiones POST, PUT y PATCH deben incluir el header Content-Type: application/json para que los nuevos datos sean recibidos correctamente.
– El campo id de cada registro es inmutable, por lo que no se puede alterar.
– Es posible conectarse a la API con JSONP o CORS
Generar datos aleatorios
También es posible usar un archivo JS para generar los datos que JSON Server para a mostrar al usuario, por ejemplo
Aquí exportamos solo una función que devuelve un objeto con solo una propiedad users, a esta propiedad de añadimos los datos de 1000 usuarios e iniciamos el servidor como:
Mejores datos aleatorios con Faker
Faker es otro módulo de npm usado para obtener datos aleatorios más realistas para usuarios, direcciones, imágenes, teléfonos, etc. Con un script similar al anterior vamos a generar objetos con más propiedades para que parezcan usuarios reales:
Iniciamos el servidor:

Ejemplo de un usuario generado por Faker

Características

Ahora que tenemos una API funcionando vamos a explorar algunas de las opciones disponibles para hacer las peticiones
Rutas plurales
Estas se refieren a recursos que pueden contener múltiples registros, con un id indicamos qué registro queremos obtener
GET /users
GET /users/1
POST /users
PUT /users/1
PATCH /users/1
DELETE /users/1
Rutas singulares
Estas se refieren a recursos que contienen solo un registro
GET /profile
POST /profile
PUT /profile
PATCH /profile
Paginación
Por default JSON Server devuelve 10 registros al usar la opción de paginación, simplemente debemos añadir la variable _page para indicar el número de página y _limit para cambiar el límite.
GET /users?_page=7
GET /users?_page=7&_limit=20
Ordenamiento
Con la variable _sort indicamos qué propiedad se usa para el ordenamiento y con _orderespecificamos ascendente o descendente (ascendente por default)
GET /posts?_sort=views&_order=DESC
GET /posts/1/comments?_sort=votes&_order=ASC
Operadores
Para incluir un rango en la consulta usamos los operadores _gte or _lte
GET /posts?views_gte=10&views_lte=20
Con _ne excluimos un valor
GET /posts?id_ne=1
Con _like especificamos un filtro
GET /posts?title_like=server
Búsqueda de texto
Para hacer una búsqueda genérica añadimos la variable q
GET /posts?q=internet

Conclusión

Y allí lo tienen, una API REST totalmente funcional con muchas opciones para configuración que podemos usar durante el desarrollo de nuestras apps sin depender de una fuente de datos remota, van a encontrar la documentación completa en el sitio oficial del proyecto JSON Server.
Referencias
JSON Server
Faker

Comentarios

Entradas populares de este blog

Instalar Ruby on Rails en Ubuntu 13.04

Instalar Ruby on Rails en Ubuntu 13.04

¿Cómo ver sqlite3 en interfaz gráfica rápidamente?