APIGit
2023-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 robusta de definir comportamientos de servidor simulados. Sin embargo, la transición de la versión anterior (basada exclusivamente en JavaScript) a la nueva requiere abordar algunos problemas.cambios importantes.
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 tenerlos en cuenta y adaptar sus 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 simuladoseguir 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, varias bibliotecas populares de JavaScript estaban disponibles globalmente, lo que permitía su 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 muestra 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. Por favor, úselo.mock.[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.