APIGit
2024-11-14
Le 9 novembre 2024, APIGIT a officiellement lancé une nouvelle version du backend MockServer, propulsé parExpress.jset s'exécute dans un environnement sandbox Node.js. Cette version apporte des fonctionnalités améliorées, une flexibilité accrue et une manière plus robuste de définir les comportements des serveurs fictifs. Cependant, la transition de l'ancienne version (basée sur JavaScript pur) vers la nouvelle nécessite de traiter certainschangements de rupture.
Ce guide vous aidera à comprendre ces changements, à adapter vos projets de serveur fictif existants et à assurer une migration transparente vers le nouveau MockServer.
Le nouveau MockServer a introduit quelques changements majeurs par rapport à l'ancienne version. Il est important d'être conscient de ces changements et d'adapter vos projets en conséquence.
Ancien format d'URL:your-mockserver.mock.apigit.com
Nouveau format d'URL:your-mockserver.mockserver.apigit.com
Si vous aveznon rééditévotre serveur fictif depuis le lancement du nouveau MockServer, l'ancien serveur fictif seracontinuer à travailler jusqu'à la fin de l'année. Cependant, si vous décidez derepubliervotre serveur fictif utilisant le même nom de serveur fictif, vous devrez mettre à jour toutes les références existantes pour refléter la nouvelle structure d'URL.
Exemple:
https://your-mockserver.mock.apigit.com/endpoint
https://your-mockserver.mockserver.apigit.com/endpoint
Assurez-vous de mettre à jour toutes les références dans vos applications clientes, votre documentation et vos intégrations.
Dans l'ancien MockServer, plusieurs bibliothèques JavaScript populaires étaient disponibles dans le monde entier, permettant une utilisation directe sans importations explicites. Il s'agissait notamment de :
_
)(v4.17.21) - Fonctions utilitaires généralesmoment
)(v2.30.1) - Gestion de l'heure et de la datefaker
)(v5.5.3) - Générateur de donnéesAjv
)(v6.10.0) - Validation du schéma JSONvalidator
)(v13.12.0) - Aide à la validationDans la nouvelle version de MockServer, ces bibliothèques doivent désormais êtreimporté manuellement en utilisant require
ou import
instructions dans vos scripts fictifs avant utilisation.
require
ou import
instructions pour toutes les bibliothèques prises en charge utilisées dans vos scripts fictifs.Le nouveau MockServer est livré avec des bibliothèques JavaScript populaires préinstallées. Vous trouverez ci-dessous une liste des bibliothèques prises en charge et des exemples de leur utilisation :
Exemple d'utilisation:
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.define("/testlibs", "GET", 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);
});
© 2024 APIGit Inc.