بنية واجهة برمجة التطبيقات الأولية. يحتوي على مجموعة أساسية ويجب توفرها من الوحدات والخدمات والتكوينات.
استخدم Express Middlewares لتقسيم الوظائف وفصل الأجزاء بشكل منطقي. قد يحتوي كل جهاز توجيه/نقطة نهاية على سلسلة من البرامج الوسيطة للتحقق من صحة البيانات وتحميل البيانات من مصادر البيانات وتعيين البيانات والتحقق من الأذونات وتنفيذ منطق العمل الرئيسي.
يجب أن يكون لكل وظيفة وسيطة نفس الاسم من خلال مجموعة السلسلة بأكملها.
مثال: إذا مرر طلب جديد لعملية إنشاء مستخدم وظائف وسيطة متعددة، فيجب أن يكون لكل منها نفس الاسم ( createOne(req, res, next)
)
* الاستثناء: البرامج الوسيطة "المساعدة" غير ذات الصلة
مثال:
appRoute.get('/:userId',
authMiddleware.isAuthenticated,
acl.getOne,
validator.getOne,
loader.getOne,
controller.getOne,
);
./app/middlewares/
عناصر السلسلة لأداء وظائف محددة خاصة بها.
يتحقق مما إذا كان الطلب الحالي قد يصل إلى منطق العمل. قد تتحقق هذه الطبقة مما إذا كان المستخدم الذي قام بتسجيل الدخول لديه أذونات لتنفيذ هذا الطلب.
مثال:
async getOne(req, res, next) {
if (mainAcl.isAdmin(req.user)) {
return next();
}
const userIdRequested = req.params.userId;
const userIdCurrent = req.user._id.toString();
if (userIdRequested === userIdCurrent) {
return next();
}
return next(new Forbidden());
},
يقوم بتعيين البيانات الصادرة/الواردة لمزيد من المعالجة بواسطة وظيفة أخرى.
مثال:
updateOne(req, res, next) {
delete req.body.password;
delete req.body.confirm_password;
return next();
},
التحقق من صحة البيانات الواردة وفقًا للقواعد المثبتة لمنع معالجة البيانات غير الصالحة.
مثال:
deleteOne(req, res, next) {
req.assert('userId', 'Valid user id should be provided').notEmpty().isMongoId();
mainValidator.handleValidationResult(mainValidator.validateErrorsSync(req), res, next);
},
عمليات التحميل/الحصول المطلوبة من قبل كيانات/كائنات منطق الأعمال من مصادر البيانات المتاحة. قد يقوم النظام باسترداد المستخدمين أو الكيانات ذات الصلة من قاعدة بيانات أو معالجة البيانات.
يقوم بتخزين وتمرير الكيانات المحملة في كائن خاص داخل كائن req
(الطلب). يجب استخدام خدمة محمل الكيان لإدخال كافة الكيانات وتمريرها داخل كائن الطلب.
مثال:
async getOne(req, res, next) {
try {
const userFound = await UserService.findOne({ query: { _id: req.params.userId }, options: { lean: true } });
if (!mainHelper.isObjectValid(userFound)) {
throw new NotFound('user not found');
}
MainLoader.setEntities(req, { user: userFound });
return next();
} catch (err) {
return next(err);
}
},
./app/services/
تؤدي الخدمات وظيفة التركيز أحادية التفكير ليتم استدعاؤها داخل التطبيق للتعامل مع منطق الأعمال.
./commands
قم بزيارة https://nodejs.org للحصول على تفاصيل التثبيت.
يجب أن يأتي مدير حزم العقدة مرفقًا مع العقدة.
تثبيت MongoDB https://docs.mongodb.com/manual/installation/
$ git clone <package url> .
$ npm install
config/env/env.local
وانسخ البيانات من config/env/env.local_example
config/env/.env.test
وانسخ البيانات من config/env/.env.test_example
$ npm run start:[environment]
مثال: $ npm run start:local