JSON Server permite crear APIs REST a partir de un simple archivo .json. Es perfecto para prototipado rápido o para implementar mocks de una API.
Datos de ejmplo
Archivo test.json:
{
"articles": [
{
"id": 1,
"title": "Artículo de ejemplo 1",
"body": "<p>Eum tempora saepe asperiores. Dolor et maiores non illo. Perferendis dolores ea voluptas aut rem quas est exercitationem. Dolor dolores pariatur odio laboriosam. Repellat qui et ipsam architecto delectus sint ipsam accusantium.</p><p>Et eum cumque ut repellat. Excepturi assumenda vero fugiat incidunt sed minus consequatur. Excepturi perspiciatis in et rem. Tempora doloribus fugiat dolor quia. Fuga architecto illum ut eos minus non amet ullam.</p>"
},
{
"id": 2,
"title": "Artículo de ejemplo 2",
"body": "<p>Eum tempora saepe asperiores. Dolor et maiores non illo. Perferendis dolores ea voluptas aut rem quas est exercitationem. Dolor dolores pariatur odio laboriosam. Repellat qui et ipsam architecto delectus sint ipsam accusantium.</p><p>Et eum cumque ut repellat. Excepturi assumenda vero fugiat incidunt sed minus consequatur. Excepturi perspiciatis in et rem. Tempora doloribus fugiat dolor quia. Fuga architecto illum ut eos minus non amet ullam.</p>"
}
],
"products": [
{
"id": 1,
"title": "Producto de ejemplo 1",
"price": 25.6
},
{
"id": 2,
"title": "Producto de ejemplo 2",
"price": 50
}
]
}
Nota importante: La raíz debe ser siempre un objeto ( {} ), ya que la clave cada uno de los elementos de dicho objeto serán las rutas que se creen.
Nota importante 2: Si se hacen cambios en el archivo JSON, hay que parar y volver a arrancar los contenedores.
Arrancar con docker
Ejecutar:
docker run -d -p 8888:80 -v ${PWD}/test.json:/data/db.json clue/json-server
Arrancar con docker-compose
Crear archivo docker-compose.yml con el este contenido y ejecutar "docker-compose up -d":
version: "3"
services:
json_server:
image: clue/json-server
ports:
- 8888:80
volumes:
- ./test.json:/data/db.json
Uso
Acceder a localhost:8888 desde un navegador web. Desde la página principal se muestran todos los endpoints disponibles, junto a uno general llamado "/db".
Para acceder al listado de elementos de una colección puede hacerse directamente desde /[COLECCIÓN]. Por ejemplo: localhost:8888/products .
Puede accederse directamente a un elemento específico si su definición tiene id. Por ejemplo, puede accederse directamente a "Artículo de ejemplo 2" desde "localhost:8888/articles/2".
Más opciones (filtrado, etc)
JSON Server permite además filtrar resultados, ordenar, etc... pueden verse todas las operaciones permitidas en https://github.com/typicode/json-server#routes
Fuentes
Imagen de Provincial Archives of Alberta en Unsplash.