APIGit
2024-11-15
La création d'API fictives est souvent une partie essentielle du développement de logiciels, que ce soit pour des tests ou un prototypage rapide.Serveur simulé, un outil puissant qui s'enroule autourExpress.jspour fournir un environnement simplifié pour définir le comportement du serveur fictif sans avoir à installer et configurer manuellement une application Express.
MockServer est essentiellement un wrapper pour une application Express.js exécutée dans un environnement sandbox Node.js. Il vous aide à créer rapidement des API fictives et à gérer diverses requêtes HTTP en utilisant des définitions simples. Cet article de blog vous présentera MockServer, expliquera ses fonctionnalités et montrera à quel point il est facile de démarrer avec quelques exemples.
lodash
,moment
,faker
, et bien d'autres sont préinstallés, simplifiant la création de réponses fictives dynamiques.MockServer fonctionne en vous permettant de définir des itinéraires API à l'aide de**mock
objet. Lemock
l'objet est une instance globale qui encapsule une application Express.js et prend en charge la définition d'itinéraires via lemock.define()
**fonction. Il offre la flexibilité d'Express.js, ce qui simplifie la création et la gestion des API à des fins de test et de développement.
Voici un aperçu de la manière dont MockServer simplifie la création d’API :
mock.define()
pour définir des itinéraires et des gestionnaires de requêtes.req
et res
pour gérer les requêtes et les réponses HTTP.L'exemple suivant montre à quel point il est facile de créer des itinéraires à l'aide de 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);
Cet exemple montre comment utilisermock.define()
pour créer des itinéraires POST et DELETE. Les itinéraires sont définis de manière similaire aux applications Express.js standard, garantissant une structure d'API familière.
Tout comme dans Express.js, vous pouvez utiliser un middleware pour traiter les requêtes avant qu'elles n'atteignent le gestionnaire de route final :
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();
});
Le mock.use()
la fonction peut être utilisée pour définir un middleware pour toutes les routes ou des chemins spécifiques, comme dans une application Express.
MockServer fournit un moyen simple d'interagir avec les requêtes et les réponses à l'aide des conventions standard d'Express.js. Vous trouverez ci-dessous quelques exemples de tâches courantes :
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 est livré avec des bibliothèques JavaScript populaires préinstallées, vous pouvez donc les utiliser directement dans vos définitions fictives :
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
});
});
Ces bibliothèques vous aident à créer facilement des réponses riches et dynamiques sans avoir besoin d'installations supplémentaires. Si vous avez besoin d'une bibliothèque qui n'est pas répertoriée, veuillez contacter APIGIT, et nous l'évaluerons et l'ajouterons rapidement. Les bibliothèques prises en charge incluent :
MockServer fournit unstate
objet, qui vous permet de stocker et de récupérer des données entre les requêtes, facilitant ainsi la simulation d'un état persistant :
// 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" });
});
Pour maintenir un code plus propre et mieux organisé, MockServer prend en charge la division des scripts fictifs en plusieurs fichiers de manière modulaire, similaire aux pratiques de développement quotidiennes. En règle générale, vous auriez unmain.js
fichier qui définit toutes les routes, ce qui nécessite ensuite des définitions de gestionnaires à partir de fichiers séparés. Cela vous permet de créer des modules réutilisables et bien structurés pour les gestionnaires de routes, gardant votre base de code maintenable.
Par exemple:
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
pour les exporter ensemble.// 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
};
Cette approche modulaire vous aide à organiser les itinéraires de manière logique et permet la réutilisabilité dans différents projets de simulation.
MockServer simplifie le processus de configuration des API fictives en exploitant la puissance d'Express.js dans un environnement sandbox. Avec des bibliothèques intégrées, des définitions d'itinéraire simples, une prise en charge des intergiciels et une gestion des données avec état, c'est une solution pratique pour les développeurs qui cherchent à créer des API fictives rapidement et efficacement.
Que vous soyez un développeur débutant ou expérimenté, MockServer fournit les outils dont vous avez besoin pour simuler le comportement des API sans avoir à configurer un serveur Express complet. Essayez-le et rendez vos tests et votre prototypage d'API plus fluides et plus productifs.
© 2024 APIGit Inc.