APIGit
2023-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 méthode plus robuste pour définir les comportements des serveurs fictifs. Cependant, la transition de l'ancienne version (purement basée sur JavaScript) vers la nouvelle nécessite de résoudre certains problèmes.changements 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'en tenir compte 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 fictifcontinuer à 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 mondialement, permettant une utilisation directe sans importation explicite. Parmi celles-ci :
_
)(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 d'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.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()
obsolète, utilisermock.[get|post|delete|...]()
plutôt**mock.define()
est obsolète dans ce nouveau serveur de simulation. Veuillez utilisermock.[get|post|delete|...]()
au lieu de cela, qui est la manière native deexpress.js
pour définir des itinéraires. Veuillez noter quemock.define()
**est toujours disponible, mais il cessera d'être pris en charge à l'avenir.
tout changer**mock.define()
** à mock.[get|post|delete|...]()
.
© 2024 APIGit Inc.