APIGit
2024-11-14
Am 9. November 2024 hat APIGIT offiziell eine neue Version des MockServer-Backends eingeführt, unterstützt durchExpress.jsund läuft in einer Node.js-Sandbox-Umgebung. Diese Version bietet verbesserte Funktionen, mehr Flexibilität und eine robustere Möglichkeit, Mock-Server-Verhalten zu definieren. Der Übergang von der alten Version (rein JavaScript-basiert) zur neuen erfordert jedoch einigeWichtige Änderungen.
Dieses Handbuch hilft Ihnen, diese Änderungen zu verstehen, Ihre vorhandenen Mock-Server-Projekte anzupassen und eine nahtlose Migration auf den neuen MockServer sicherzustellen.
Der neue MockServer hat im Vergleich zur alten Version einige wichtige Änderungen eingeführt. Es ist wichtig, sich dieser Änderungen bewusst zu sein und Ihre Projekte entsprechend anzupassen.
Altes URL-Format:your-mockserver.mock.apigit.com
Neues URL-Format:your-mockserver.mockserver.apigit.com
Wenn Sienicht neu veröffentlichtIhr Mock-Server seit dem Start des neuen MockServers, der alte Mock-Server wirdbis Ende des Jahres weiterarbeitenWenn Sie sich jedoch dazu entschließen,erneut veröffentlichenWenn Ihr Mock-Server denselben Mockserver-Namen verwendet, müssen Sie alle vorhandenen Referenzen aktualisieren, um die neue URL-Struktur widerzuspiegeln.
Beispiel:
https://your-mockserver.mock.apigit.com/endpoint
https://your-mockserver.mockserver.apigit.com/endpoint
Aktualisieren Sie unbedingt alle Referenzen in Ihren Clientanwendungen, Dokumentationen und Integrationen.
Im alten MockServer waren mehrere beliebte JavaScript-Bibliotheken global verfügbar, sodass eine direkte Nutzung ohne explizite Importe möglich war. Dazu gehörten:
_
)(v4.17.21) - Allgemeine Hilfsfunktionenmoment
)(v2.30.1) - Zeit- und Datumsbehandlungfaker
)(v5.5.3) - DatengeneratorAjv
)(v6.10.0) - JSON-Schemavalidierungvalidator
)(v13.12.0) - ValidierungshilfeIn der neuen Version von MockServer müssen diese Bibliotheken nunmanuell importiertmitrequire
oder import
-Anweisungen in Ihren Mock-Skripten vor der Verwendung.
require
oder import
Anweisungen für alle unterstützten Bibliotheken, die in Ihren Mock-Skripten verwendet werden.Der neue MockServer ist mit beliebten JavaScript-Bibliotheken vorinstalliert. Nachfolgend finden Sie eine Liste der unterstützten Bibliotheken und Beispiele für deren Verwendung:
Beispielverwendung:
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()
veraltet, verwendenmock.[get|post|delete|...]()
stattdessen**mock.define()
ist in diesem neuen Mockserver veraltet. Bitte verwenden Siemock.[get|post|delete|...]()
stattdessen, was die native Art ist,express.js
um Routen zu definieren. Bitte beachten Sie, dassmock.define()
**ist weiterhin verfügbar, der Support wird jedoch in Zukunft eingestellt.
alles ändern**mock.define()
** Zu mock.[get|post|delete|...]()
.
© 2024 APIGit Inc.