APIGit
2024-11-15
モックAPIの作成は、テストやラピッドプロトタイピングのいずれの場合でも、ソフトウェア開発の重要な部分となることがよくあります。モックサーバー、強力なツールを包み込むエクスプレスExpress アプリケーションを手動でセットアップおよび構成する必要なく、モック サーバーの動作を定義するための簡素化された環境を提供します。
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 テストとプロトタイピングをよりスムーズかつ生産的にしてください。
© 2024 APIGit Inc.