Comunicación de servidor a servidor de Axios como ingeniero de backend de Node JS – 01
Axios es un cliente HTTP basado en promesas para node.js
y el navegador. Es isomórfico (= puede ejecutarse en el navegador y en nodejs con la misma base de código). En el lado del servidor, utiliza el módulo http
nativo node.js, mientras que en el cliente (navegador) utiliza XMLHttpRequests.
Bien, vayamos al grano, compartiré un código que realmente te ayudará cuando trabajes en la API y crees una API que sirva de “servidor a servidor”
Primero al principio, generalmente hay dos técnicas de tipo que comúnmente usa el ingeniero de backend cuando crea una API que se comunicará con otra API de otro servidor:
1. application/ x-www-form-urlencoded
2. multipart / form-data
Código de muestra para application / x-www-form-urlencoded:
OBTENER
const opt = {
url: `http://localhost:3000/books`,
method: ‘GET’,
headers: {
‘Content-Type’: ‘application/json’ ,
authorization: req.headers.authorization
},
params: {
page,
limit
}
};
const data = await axios(opt)
.then(ok => ok)
.catch(error => error);
POST
const opt = {
url: `http://localhost:3000/books`,
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
authorization: req.headers.authorization
},
data: { id, name, content},
};
const data = await axios(opt)
.then(ok => ok)
.catch(error => error);
UPDATE
const opt = {
url: `http://localhost:3000/books/:id_book`,
method: ‘PUT’,
headers: {
‘Content-Type’: ‘application/json’,
authorization: req.headers.authorization
},
data: { name, content},
};
const data = await axios(opt)
.then(ok => ok)
.catch(error => error);
ELIMINAR
const opt = {
url: ` http://localhost:3000/books/:id_book`,
headers: {
authorization: req.headers.authorization,
},
method: “DELETE”,
data: { flag }
};
datos const = aguardar axios (opt)
.entonces (ok => ok)
.catch (error => error);
Fácil ¿no es cierto?
Ahora pasemos a los datos de formulario, ahora cargaremos cualquier archivo, ya sea imagen, documento, video, música, etc. y el nombre de nuestros archivos será “Image_cover”
Código de muestra para multipart / form-data:
POST
const BodyFormData = require (‘form-data’);
bodyFormData.append(‘username’, ‘Jimmy’);
bodyFormData.append(‘book’, ‘science’);
bodyFormData.append(‘file_upload’,
req.files.image_cover[0].buffer,
{
filename: req.files.image_cover[0].originalname,
contentType: req.files.image_cover[0].mimetype,
knownLength: req.files.image_cover[0].size
}
);
const opt = {
url: ‘http://localhost:3000/books/upload”,
método: “POST”,
encabezados: bodyFormData.getHeaders(),
maxContentLength: Infinity,{
maxBodyLength: Infinity,
data: bodyFormData
};
// personalice su propia configuración de encabezado
opt.headers.Accept = “aplicación/json”;
await axios (opt)
.then(ok => ok)
.catch (error => error);
Sí, ahora puede enviar un archivo desde un servidor a otro servidor sin preocuparse
¡Espere! Una cosa más si trabaja con EXPRESS JS:
req.query = “params” dentro del parámetro axios como este params: { page, limit }
req.params = “: id_book” dentro de la variable url de axios como esta http://localhost:3000/books/:id_book
req.headers.authorization = “Bearer YOUR_TOKEN” para enviar token