Creando un API REST para pruebas en 5 minutos con JSON Server!

Photo by Veri Ivanova on Unsplash

Necesitas una API  REST para pruebas  que sea rapida de crear y sin necesidad de programar ni una sola línea? en ese caso te presento JSON-Server.  Básicamente para crearla necesitarás; un archivo .json con tus datos y tener instalado NodeJs, NPM, JSON-server y finalmente ejecutar el comando para iniciar tu servidor.

En esta publicación, aprenderá a:

  • Configurar el paquete JSON Server.
  • Crear un set de datos para el API.

Prerrequisitos

Este tutorial asume que ejecutará en una máquina con Windows 10 y cumplirá estos requisitos:

Puesta en marcha

Creando un directorio de trabajo

Luego de haber instalado los componentes definidos en la sección de prerrequisitos vamos a proceder a crear el directorio de trabajo. Dentro de él procederemos a crear un archivo con la estructura de datos que se desea exponer. Para este ejemplo he creado un archivo app.json con un listado de productos.

{
    "productos": [
        {
            "id": 1,
            "marca": "Nikon",
            "referencia": "D3400",
            "precio": 649.95
        },
        {
            "id": 2,
            "marca": "Nikon",
            "referencia": "D5",
            "precio": 6499.95
        },
        {
            "id": 3,
            "marca": "Nikon",
            "referencia": "D500",
            "precio": 1999.95
        },
        {
            "id": 4,
            "marca": "Nikon",
            "referencia": "D7200",
            "precio": 1049.95
        },
        {
            "id": 5,
            "marca": "Nikon",
            "referencia": "D500",
            "precio": 1999.95
        },
        {
            "id": 6,
            "marca": "Canon",
            "referencia": "EOS 5D",
            "precio": 3999.95
        },
        {
            "id": 7,
            "marca": "Canon",
            "referencia": "EOS 7D",
            "precio": 1800.95
        },
        {
            "id": 8,
            "marca": "Canon",
            "referencia": "EOS 80D",
            "precio": 2645.95
        },
        {
            "id": 9,
            "marca": "Canon",
            "referencia": "EOS Rebel T6",
            "precio": 989.95
        },
        {
            "id": 10,
            "marca": "Canon",
            "referencia": "EOS-1D",
            "precio": 753.95
        },
        {
            "id": 11,
            "marca": "Canon",
            "referencia": "EOS 1D X",
            "precio": 457.95
        }
    ]
}

En el mismo archivo tambien posible definir un bloque de infomación adicional como por ejemplo usuario.

Instalando JSON Server

El siguiente paso es instalar ubicarse en el directorio creado y usando tu terminal favorita procedemos a ejecutar lo siguiente:

npm install -g json-server

Iniciando el servicio

Ahora es momento de iniciar el servicio en el cual definiremos el nombre del archivo que expondremos, en este caso es app.json, el puerto en el que estará disponible y tambien un parametro adiconal –watch esto permite poder estar atento a cualquier cambio que tenga el archivo.

json-server --watch app.json --port 8080

De esta manera tenemos disponible nuestra API REST para ser utilizada en nuestra aplicación. Algunos de las operaciones a realizar serán:

  • GET /productos Retorna lista de productos.
  • GET /productos/1 Retorna el producto con ID = 1.
  • POST /productos Crea un registro de producto en la base de datos.
  • PUT /productos/1 Actualiza el registro del producto con el ID = 1.
  • PATCH /productos/1 Actualiza los campos especificados para el producto con el ID 1.
  • DELETE /productos/1 Elimina un producto por el ID = 1.

Configuraciones adiccionales

Es posible que de acuerdo a caracteristicas del proyecto requieras configuraciones especiales como las siguientes:

Routing personalizado

Para utilizar un routing personalizado debes crear un archivo con la definiciones, por ejemplo routes.json y luego iniciar el servicio.

{
  "/api/*": "/$1",   
  "/:resource/:id/show": "/:resource/:id",
  "/productos/:marca": "/productos?marca=:productos",
  "/productos\\?id=:id": "/productos/:id"
}

El servicio se iniciaría de la siguiente manera:

json-server app.json --routes routes.json

Con esto las rutas se resolveran de la siguiente manera.

/api/productos# → /productos
/api/productos/1  # → /productos/1
/productos/1/show # → /productos/1
/productos/cannon # → /productos?marca=cannon
/productos?id=1 # → /productos/1

Parametros del CLI

El CLI de JSON Server proporciona las siguientes opciones:

json-server [options] <source>

Options:
  --config, -c       Path to config file           [default: "json-server.json"]
  --port, -p         Set port                                    [default: 3000]
  --host, -H         Set host                             [default: "localhost"]
  --watch, -w        Watch file(s)                                     [boolean]
  --routes, -r       Path to routes file
  --middlewares, -m  Paths to middleware files                           [array]
  --static, -s       Set static files directory
  --read-only, --ro  Allow only GET requests                           [boolean]
  --no-cors, --nc    Disable Cross-Origin Resource Sharing             [boolean]
  --no-gzip, --ng    Disable GZIP Content-Encoding                     [boolean]
  --snapshots, -S    Set snapshots directory                      [default: "."]
  --delay, -d        Add delay to responses (ms)
  --id, -i           Set database id property (e.g. _id)         [default: "id"]
  --foreignKeySuffix, --fks  Set foreign key suffix, (e.g. _id as in post_id)
                                                                 [default: "Id"]
  --quiet, -q        Suppress log messages from output                 [boolean]
  --help, -h         Show help                                         [boolean]
  --version, -v      Show version number                               [boolean]

Examples:
  json-server db.json
  json-server file.js
  json-server http://example.com/db.json

Conclusiones

En resumen, JSON Server te permite habilitar un servicio API REST que puede ser útil cuando realizas prototipos de aplicaciones y se require al personal del Frontend que adelante otras actividades mientras el equipo del Backend esta en desarrollo o tambien cuando te encuentras realizando pruebas de automatización por ejemplo utilizado Postman.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *