Construye con Javascript una blockchain basica. Parte 6

creando un api

El siguiente paso es crear una interfaz de programa de aplicación (API) para poder
para acceder al código que escribe. Esta es una parte importante de una blockchain ya sea para acceder a sus sus bloques y wallet o realizar cualquier operación utilizando un servicio HTTP. En esta sección, utilizará la libreria Express, ya que es fácil de ejecutar y podrás crear tu API fácilmente.

Estaremos creando los siguientes servicios:
• blocks: recupera todos los bloques de la cadena de bloques
• getBlock: recupera un bloque específico por índice
• getDBBlock: recupera un bloque de la base de datos
• getWallet: crea una nueva wallet generando una clave pública-privada

Instalaremos express y body-parser. Estas bibliotecas le permitirán crear un servidor y mostrar páginas en el navegador.

> npm install express body-parser --save

También debe importar el archivo wallet.js que creó.

let express = require("express"),
 bodyParser = require('body-parser'),
 wallet = require('./wallet');

A continuación, crearemos un método llamado initHttpServer que iniciará el
servidor y creará los servicios. A medida que utilizamos diferentes instancias y las ejecutamos en la misma computadora deseamos utilizar diferentes números de puerto. Es común usar el puerto 80 o 8081 para servicios HTTP, pero no es necesario. Lo que harás es pasar el número de puerto aleatorio que estás usando y utilizaremos slice para obtener los dos últimos dígitos del número de puerto.

let initHttpServer = (port) => {
 let http_port = '80' + port.toString().slice(-2);
 let app = express();
 app.use(bodyParser.json());

El servicio blocks recuperará todos sus bloques.

app.get('/blocks', (req, res) => res.send(JSON.stringify(
chain.blockchain )));

El servicio getBlock recuperará un bloque basado en un índice.

app.get('/getBlock', (req, res) => {
 let blockIndex = req.query.index;
 res.send(chain.blockchain[blockIndex]);
 });

El servicio getDBBlock recuperará una entrada de base de datos de LevelDB basada en
en un índice.

app.get('/getDBBlock', (req, res) => {
 let blockIndex = req.query.index;
 chain.getDbBlock(blockIndex, res);
 });

El servicio getWallet utilizará el archivo wallet.js que creó en el paso anterior y generará su par de claves pública-privada.

 app.get('/getWallet', (req, res) => {
 res.send(wallet.initWallet());
 });

Por último, utilizará el método listen de Express.

app.listen(http_port, () => console.log('Listening http on
port: ' + http_port));
};

Llamaremos al método initHttpServer que creó después de iniciar la red P2P:

(async () => {
 const port = await getPort();
 initHttpServer(port);
}

Para llamar a sus servicios, ejecute la red P2P y luego puede abrir un navegador
y llamar a la API.

http://localhost:80[port]/getWallet
http://localhost:80[port%5D/blocks
http://localhost:80[port%5D/getBlock?index=0
http://localhost:80[port]/ getDBBlock?index=0

En este post, creó servicios de API y ahora puede interactuar con su Red P2P. Creó sus servicios para que pueda crear múltiples instancias de las redes P2P en la misma máquina; sin embargo, en realidad, cada máquina tendrá solo un peer. En el siguiente post, creará una interfaz de línea de comandos (CLI) para llamar fácilmente a estos servicios.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s