APIGit
2024-11-14
2024年11月9日、APIGITはMockServerバックエンドの新バージョンを正式にリリースしました。エクスプレスNode.jsサンドボックス環境で実行できます。このバージョンでは、機能が向上し、柔軟性が高まり、モックサーバーの動作をより堅牢に定義できるようになりました。ただし、古いバージョン(純粋なJavaScriptベース)から新しいバージョンに移行するには、いくつかの問題に対処する必要があります。重大な変更。
このガイドは、これらの変更を理解し、既存のモック サーバー プロジェクトを適応させ、新しい MockServer へのシームレスな移行を確実に行うのに役立ちます。
新しい MockServer では、古いバージョンと比較していくつかの重大な変更が導入されています。これらの変更を認識し、それに応じてプロジェクトを調整することが重要です。
古い URL 形式:your-mockserver.mock.apigit.com
新しい URL 形式:your-mockserver.mockserver.apigit.com
もしあなたが再公開されません新しいMockServerの起動以降、古いモックサーバーは年末まで仕事を続けるただし、再出版する同じ mockserver 名を使用するモック サーバーの場合は、新しい URL 構造を反映するように既存の参照を更新する必要があります。
例:
https://your-mockserver.mock.apigit.com/endpoint
https://your-mockserver.mockserver.apigit.com/endpoint
クライアント アプリケーション、ドキュメント、統合内の参照を必ず更新してください。
以前の MockServer では、いくつかの一般的な JavaScript ライブラリがグローバルに利用可能で、明示的なインポートなしで直接使用できました。これには次のものが含まれます。
_
)(v4.17.21) - 一般的なユーティリティ関数moment
)(v2.30.1) - 時間と日付の処理faker
)(v5.5.3) - データジェネレーターAjv
)(v6.10.0) - JSON スキーマ検証validator
)(v13.12.0) - 検証ヘルパーMockServerの新しいバージョンでは、これらのライブラリは手動でインポート使用してrequire
または import
使用する前に、モック スクリプトにステートメントを追加します。
require
または import
モック スクリプトで使用されるサポートされているライブラリのステートメント。新しい MockServer には、一般的な JavaScript ライブラリがプリインストールされています。以下は、サポートされているライブラリのリストと、その使用例です。
使用例:
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()
非推奨、使用mock.[get|post|delete|...]()
その代わり**mock.define()
この新しいモックサーバーでは非推奨です。mock.[get|post|delete|...]()
代わりに、それはexpress.js
ルートを定義するために。mock.define()
**まだ利用可能ですが、将来的にはサポートが停止されます。
すべて変更**mock.define()
** に mock.[get|post|delete|...]()
。
© 2024 APIGit Inc.