APIGit
2024-11-14
2024년 11월 9일, APIGIT은 공식적으로 MockServer 백엔드의 새로운 버전을 출시했습니다.익스프레스.jsNode.js 샌드박스 환경에서 실행됩니다. 이 버전은 개선된 기능, 향상된 유연성, 모의 서버 동작을 정의하는 더욱 강력한 방법을 제공합니다. 그러나 이전 버전(순수 JavaScript 기반)에서 새 버전으로 전환하려면 몇 가지를 해결해야 합니다.변경 사항 중단.
이 가이드는 이러한 변경 사항을 이해하고 기존 모의 서버 프로젝트를 조정하고 새로운 MockServer로 원활하게 마이그레이션하는 데 도움이 됩니다.
새로운 MockServer는 이전 버전과 비교하여 몇 가지 중요한 변경 사항을 도입했습니다. 이러한 변경 사항을 인식하고 프로젝트를 그에 맞게 조정하는 것이 중요합니다.
이전 URL 형식:your-mockserver.mock.apigit.com
새로운 URL 형식:your-mockserver.mockserver.apigit.com
만약 당신이 가지고 있다면재출판되지 않음새로운 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|...]()
.