APIGit
2024-11-14
El 9 de noviembre de 2024, APIGIT lanzó oficialmente una nueva versión del backend MockServer, impulsado porExpress.jsy se ejecuta en un entorno sandbox de Node.js. Esta versión ofrece funciones mejoradas, mayor flexibilidad y una forma más sólida de definir comportamientos de servidor simulados. Sin embargo, la transición de la versión anterior (basada puramente en JavaScript) a la nueva requiere abordar algunas cuestiones.cambios de última hora.
Esta guía le ayudará a comprender estos cambios, adaptar sus proyectos de servidor simulado existentes y garantizar una migración sin problemas al nuevo MockServer.
El nuevo MockServer ha introducido algunos cambios importantes en comparación con la versión anterior. Es importante tener en cuenta estos cambios y adaptar los proyectos en consecuencia.
Formato de URL antiguo:your-mockserver.mock.apigit.com
Nuevo formato de URL:your-mockserver.mockserver.apigit.com
Si tienesNo republicadosu servidor simulado desde el lanzamiento del nuevo MockServer, el antiguo servidor simuladoContinuar trabajando hasta fin de año. Sin embargo, si decidesrepublicarSi su servidor simulado utiliza el mismo nombre de servidor simulado, deberá actualizar cualquier referencia existente para reflejar la nueva estructura de URL.
Ejemplo:
https://your-mockserver.mock.apigit.com/endpoint
https://your-mockserver.mockserver.apigit.com/endpoint
Asegúrese de actualizar todas las referencias en sus aplicaciones cliente, documentación e integraciones.
En el antiguo MockServer, había varias bibliotecas populares de JavaScript disponibles globalmente, lo que permitía un uso directo sin importaciones explícitas. Entre ellas se encontraban:
_
)(v4.17.21) - Funciones de utilidad generalmoment
)(v2.30.1) - Manejo de fecha y horafaker
)(v5.5.3) - Generador de datosAjv
)(v6.10.0) - Validación del esquema JSONvalidator
)(v13.12.0) - Asistente de validaciónEn la nueva versión de MockServer, estas bibliotecas ahora deben serimportado manualmente usando require
o import
declaraciones en sus scripts simulados antes de usarlos.
require
o import
declaraciones para cualquier biblioteca compatible utilizada en sus scripts simulados.El nuevo MockServer viene con bibliotecas JavaScript populares preinstaladas. A continuación, se incluye una lista de bibliotecas compatibles y ejemplos de cómo usarlas:
Ejemplo de uso:
var moment = require('moment'); // require
const { faker } = require('@faker-js/faker');
const Ajv = require("ajv");
var validator = require('validator');
const base64 = require('base64-js');
const jwt = require('jsonwebtoken');
const { v4: uuidv4 } = require('uuid');
const _ = require('lodash');
function testLodash() {
// Test data
const users = [
{ id: 1, name: 'Alice', age: 25, active: true },
{ id: 2, name: 'Bob', age: 30, active: false },
{ id: 3, name: 'Charlie', age: 35, active: true },
{ id: 4, name: 'David', age: 40, active: false }
];
// Example 1: Filter active users
const activeUsers = _.filter(users, { active: true });
console.log('Active Users:', activeUsers);
// Example 2: Sort users by age in descending order
const sortedByAge = _.orderBy(users, ['age'], ['desc']);
console.log('Users sorted by age (desc):', sortedByAge);
// Example 3: Get the names of all users
const userNames = _.map(users, 'name');
console.log('User Names:', userNames);
}
function testMoment() {
console.log("Current time is:", moment().format());
}
function testUuidv4() {
console.log("UUID is:", uuidv4());
}
function testAjv() {
const ajv = new Ajv();
const schema = {
type: "object",
properties: {
foo: { type: "integer" },
bar: { type: "string" },
},
required: ["foo"],
additionalProperties: false,
};
const data = { foo: 1, bar: "abc" };
const validate = ajv.compile(schema);
const valid = validate(data);
if (!valid) console.log(validate.errors);
}
function testBase64() {
const text = 'Hello, world!';
const textBytes = new TextEncoder().encode(text);
const base64Encoded = base64.fromByteArray(textBytes);
console.log('Base64 Encoded:', base64Encoded);
const decodedBytes = base64.toByteArray(base64Encoded);
const decodedText = new TextDecoder().decode(decodedBytes);
console.log('Decoded Text:', decodedText);
}
function testValidator() {
const result = validator.isEmail('fooo~bar.com');
console.log("fooo~bar.com is email, right?", result);
}
function testFakerJS() {
return {
userId: faker.string.uuid(),
username: faker.internet.username(),
email: faker.internet.email(),
avatar: faker.image.avatar(),
password: faker.internet.password(),
birthdate: faker.date.birthdate(),
registeredAt: faker.date.past(),
};
}
function testJwt() {
const SECRET_KEY = 'your-secret-key';
const payload = { userId: 123, username: 'testUser' };
const token = jwt.sign(payload, SECRET_KEY, { expiresIn: '1h' });
console.log('Generated Token:', token);
try {
const decoded = jwt.verify(token, SECRET_KEY);
console.log('Decoded Payload:', decoded);
} catch (err) {
console.error('Token verification failed:', err.message);
}
}
mock.get("/testlibs", function (req, res) {
console.log("==== this is a test of libs supported =====");
testLodash();
testMoment();
testUuidv4();
testAjv();
testValidator();
testBase64();
testJwt();
const jsonData = testFakerJS();
return res.status(200).json(jsonData);
});
mock.define()
obsoleto, usomock.[get|post|delete|...]()
en cambio**mock.define()
está obsoleto en este nuevo servidor simulado. Utilicemock.[get|post|delete|...]()
En cambio, que es la forma nativa deexpress.js
para definir rutas. Tenga en cuenta quemock.define()
**Todavía está disponible, pero dejará de brindar soporte en el futuro.
cambiar todo**mock.define()
** a mock.[get|post|delete|...]()
.
© 2024 APIGit Inc.