JSON Server, prototipado rápido de API

provincial-archives-of-alberta-fHAny9LJjag-unsplash-red.jpg
Solucionex
19
Mayo 23

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

Repositorio oficial

Imagen de docker

Imagen de Provincial Archives of Alberta en Unsplash.