APIGit
2024-11-15
모의 API를 만드는 것은 테스트 또는 신속한 프로토타입 제작 여부와 관계없이 소프트웨어 개발의 필수적인 부분입니다. 소개모크서버, 주위를 감싸는 강력한 도구익스프레스.jsExpress 애플리케이션을 수동으로 설정 및 구성할 필요 없이 모의 서버 동작을 정의하기 위한 단순화된 환경을 제공합니다.
MockServer는 기본적으로 Node.js 샌드박스 환경에서 실행되는 Express.js 앱의 래퍼입니다. 간단한 정의를 사용하여 모의 API를 빠르게 만들고 다양한 HTTP 요청을 처리하는 데 도움이 됩니다. 이 블로그 게시물에서는 MockServer를 소개하고, 기능을 설명하고, 몇 가지 예를 통해 시작하기가 얼마나 쉬운지 보여줍니다.
lodash
,moment
,faker
등이 사전 설치되어 있어 동적 모의 응답 생성이 간소화됩니다.MockServer는 다음을 사용하여 API 경로를 정의할 수 있도록 합니다.**mock
객체.mock
객체는 Express.js 앱을 래핑하고 다음을 통한 경로 정의를 지원하는 글로벌 인스턴스입니다.mock.define()
**기능. Express.js의 유연성을 제공하여 테스트 및 개발 목적으로 API를 쉽게 만들고 관리할 수 있습니다.
MockServer가 API 생성을 단순화하는 방법에 대한 개요는 다음과 같습니다.
mock.define()
경로와 요청 핸들러를 정의합니다.req
그리고 res
HTTP 요청과 응답을 처리합니다.다음 예제는 MockServer를 사용하여 경로를 만드는 것이 얼마나 쉬운지 보여줍니다.
const { routeCallBackFunc } = require('./util.js');
// Define routes using mock.define(path, method, handler)
mock.define("/user/:name", "POST", function(req, res) {
// Handle the request
res.status(404).send("User not found");
});
mock.define("/user/:name", "DELETE", function(req, res) {
res.status(200).send("User deleted successfully");
});
// Use request handlers from separate files
mock.define("/user/:name", "POST", routeCallBackFunc);
이 예제에서는 사용 방법을 보여줍니다.mock.define()
POST 및 DELETE 경로를 만듭니다. 경로는 표준 Express.js 애플리케이션과 유사하게 정의되어 익숙한 API 구조를 보장합니다.
Express.js와 마찬가지로 미들웨어를 사용하면 요청이 최종 경로 핸들러에 도달하기 전에 요청을 처리할 수 있습니다.
function mw1(req, res, next) {
console.log("Middleware 1 executed");
next();
}
function mw2(req, res, next) {
console.log("Middleware 2 executed");
next();
}
mock.use(mw1);
mock.use(mw2);
// Define middleware for a specific path
mock.use('/specific-path', (req, res, next) => {
console.log('Middleware for /specific-path executed');
next();
});
그mock.use()
이 함수는 Express 앱처럼 모든 경로나 특정 경로에 대한 미들웨어를 정의하는 데 사용할 수 있습니다.
MockServer는 표준 Express.js 규칙을 사용하여 요청 및 응답과 상호 작용하는 간단한 방법을 제공합니다. 다음은 일반적인 작업의 몇 가지 예입니다.
mock.define('/repository/:user/:repo', 'GET', (req, res) => {
const { user, repo } = req.params;
res.json({
message: 'Repository Details',
user: user,
repo: repo
});
});
mock.define('/search', 'GET', (req, res) => {
const { keyword, page, limit } = req.query;
res.json({
message: 'Search Parameters Received',
keyword: keyword || 'none',
page: page ? parseInt(page, 10) : 1,
limit: limit ? parseInt(limit, 10) : 10
});
});
mock.define('/not-found', 'GET', (req, res) => {
res.status(404).json({
message: 'Resource not found',
code: 404
});
});
mock.define('/single-header', 'GET', (req, res) => {
res.set('Content-Type', 'application/json');
res.set('X-Custom-Header', ['value1', 'value2']);
res.json({ message: 'Headers set successfully!' });
});
MockServer에는 인기 있는 JavaScript 라이브러리가 미리 설치되어 있으므로 모의 정의에서 직접 사용할 수 있습니다.
const _ = require('lodash');
const moment = require('moment');
const { faker } = require('@faker-js/faker');
mock.define('/test-libs', 'GET', (req, res) => {
const randomUser = {
id: faker.datatype.uuid(),
name: faker.name.findName(),
email: faker.internet.email()
};
res.json({
currentDate: moment().format(),
activeUsers: _.filter([{ active: true }, { active: false }], { active: true }),
randomUser: randomUser
});
});
이러한 라이브러리는 추가 설치 없이도 풍부하고 동적인 응답을 쉽게 만드는 데 도움이 됩니다. 나열되지 않은 라이브러리가 필요한 경우 APIGIT에 문의하시면 신속하게 평가하여 추가해 드리겠습니다. 지원되는 라이브러리는 다음과 같습니다.
MockServer는 다음을 제공합니다.state
요청 간에 데이터를 저장하고 검색할 수 있게 해주는 객체로, 지속적인 상태를 쉽게 시뮬레이션할 수 있습니다.
// Create a stateful list of users
state.users = state.users || [];
mock.define('/users', 'POST', (req, res) => {
if (!req.body.username) {
return res.status(400).json({ status: "error", details: "Missing username" });
}
state.users.push(req.body);
return res.status(200).json({ status: "ok" });
});
더 깔끔하고 체계적인 코드를 유지하기 위해 MockServer는 일상적인 개발 관행과 유사하게 모듈 방식으로 모의 스크립트를 여러 파일로 분할하는 것을 지원합니다. 일반적으로main.js
모든 경로를 정의하는 파일로, 이후 별도의 파일에서 핸들러 정의가 필요합니다. 이를 통해 경로 핸들러에 대한 재사용 가능하고 잘 구성된 모듈을 만들어 코드베이스를 유지 관리할 수 있습니다.
예를 들어:
module.exports
.// main.js
// Require handler modules at the top
const { userPostHandler, userDeleteHandler } = require('./handlers/userHandlers');
// Define routes
mock.define('/user/:name', 'POST', userPostHandler);
mock.define('/user/:name', 'DELETE', userDeleteHandler);
module.exports
함께 내보내는 거죠.// handlers/userHandlers.js
function userPostHandler(req, res) {
res.status(404).send('User not found');
}
function userDeleteHandler(req, res) {
res.status(200).send('User deleted successfully');
}
module.exports = {
userPostHandler,
userDeleteHandler
};
이러한 모듈식 접근 방식은 경로를 논리적으로 구성하는 데 도움이 되며 다양한 모의 프로젝트에서 재사용이 가능합니다.
MockServer는 샌드박스 환경에서 Express.js의 힘을 활용하여 모의 API를 설정하는 과정을 간소화합니다. 내장 라이브러리, 쉬운 경로 정의, 미들웨어 지원 및 상태 저장 데이터 관리 기능을 갖추고 있어 빠르고 효율적으로 모의 API를 만들고자 하는 개발자에게 편리한 솔루션입니다.
초보자이든 숙련된 개발자이든 MockServer는 전체 Express 서버를 설정하는 오버헤드 없이 API 동작을 시뮬레이션하는 데 필요한 도구를 제공합니다. 시도해 보고 API 테스트와 프로토타입 제작을 더욱 원활하고 생산적으로 만들어 보세요.