初期の API アーキテクチャ。基本的な必須のモジュール、サービス、構成のセットが含まれています。
機能を分割し、論理的に部分を分離するには、Express Middleware を使用します。各ルーター/エンドポイントには、データの検証、データ ソースからのデータのロード、データのマッピング、権限の確認、および主要なビジネス ロジックの実行を行う一連のミドルウェアが含まれる場合があります。
各ミドルウェア関数は、チェーン セット全体で同じ名前を持つ必要があります。
例:ユーザー作成プロセスの新しいリクエストが複数のミドルウェア関数を渡す場合、それらはすべて同じ名前を持つ必要があります ( 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
(リクエスト) オブジェクト内の特別なオブジェクトに格納して渡します。すべてのエンティティを sed し、リクエスト オブジェクト内で渡すには、エンティティ ローダー サービスを使用する必要があります。
例:
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 にアクセスしてください。
Node Package Manager はノードにバンドルされている必要があります。
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