// ルータルーティング // ルータは、主に特定の要求のURLを記述し、アクションを実行するコントローラとの対応をとるために使用される、フレームワークは、アプリケーション/ router.jsファイルはすべてのルーティングルールを統一するために使用されることに合意しました。 // 統一設定を通して、私たちは一緒に私たちは、グローバルルーティングルールを表示するために、より便利にすることができ、未知の紛争ので、いくつかの場所に散在ルール・ロジックをルーティング避けることができます。 // ルータ定義 // 内部の定義されたルールルーティングAPP / router.js URL // APP / router.js module.exportsはアプリ= => { CONST {ルータ、コントローラ} = アプリ; router.get(「/ユーザー/:ID ' 、controller.user.info); }; // アプリ/コントローラコントローラ次のリストを達成するために // アプリ/コントローラ/ user.jsの クラスコントローラ{UserControllerで延び 非同期情報(){ CONST} {CTXを= この; ctx.body = { 名: `ハロー$ {ctx.params.id} }; } } //は、これは単純なルータ、ユーザが行うGET /ユーザ/ 123、ユーザの定義を完了する。 JS、この方法は、情報の中で実行されます。 // ルータは、定義された記述を詳述 // :以下のパラメータを自由に選択することができるシーンに応じて、経路の完全な定義である router.verb(「パスマッチ」;、app.controller.action) router.verb(「名前ルータ''パスマッチ'app.controller.action); router.verb( 'パスマッチ'middleware1、...、middlewareN、app.controller.action); router.verb( 'ルータ名」、 「パスマッチ」、Middleware1、...、middlewareN、app.controller.action); // 動詞:ユーザートリガアクション、サポートGET、POST、すべてのHTTPメソッドが router.head:HEADの router.optionsを:OPTIONS router.get:GET router.put :PUTの router.post:POSTの router.patch:PATCH 。ルーター削除:DELETE router.del:による削除予約語であるが、そう提供削除エイリアス方法。 router.redirect:URLは、私たちが最も頻繁に家に使わアクセスするには、このようなルートディレクトリと缶ルートユーザーとして、処理をリダイレクトすることができます。 ルーター - 名前:ルーティング設定へのエイリアス、およびpathFor URLFORヘルパーは、URLを生成することによって、提供する機能を支援することができます。(オプション) パス - 試合:URLルーティングパス。 middleware1:ルータは、複数のミドルウェアを設定することができます。(オプション) コントローラ:特定のルートがマッピングされたコントローラ指定は2つの書き込み制御がある: app.controller.user.fetch:直接特定のコントローラ指定 「user.fetch」は:文字列形式と略記することができます / / ノート ルータの定義では、複数のミドルウェアを直列に行って支援することができる コントローラがアプリケーションで定義する必要がありますコントローラの/ディレクトリ。 コントローラは、彼らができ、経路の定義で定義された複数を含むことができる文書。$ {FunctionNameは}コントローラーは$ {fileNameに}によって対応する方法を指定します。 経路の定義におけるコントローラサポートサブディレクトリは、それらが$ {directoryNameで(ディレクトリ名)} $ {ファイル名(ファイル名)} $ {FunctionNameは(メソッド名)}によってコントローラに対応する開発することができます。 // :ここで、APP / router.jsは、いくつかの方法の経路定義され module.exportsはアプリ= => { CONST {ルータ、コントローラ} =アプリ。 router.get( '/ホーム' 、controller.home)。 router.get( '/ユーザ/:ID' 、controller.user.page)。 router.post( '/管理' 、isAdmin、controller.admin)。 router.post( '/ユーザ、isLoginUser、hasAdminPermission、controller.user.create)。 router.post( '/ API / V1 /コメント'、controller.v1.comments.create)。// アプリ/コントローラ/ V1 / comments.js }。 // 参数命名方式 // アプリ/ router.js module.exportsは=アプリ=> { // GET参数拼接http://127.0.0.1:7001/user/123/xiaoming app.router.get( '/ユーザ/ :ID /:名」、App.controller.user.info); // フォームポストパラメータ取得要求 app.router.post( '/フォーム' 、app.controller.form.post); }; // アプリ/コントローラ/ user.jsの 輸出。 CTX = =情報の非同期> { // GET ctx.body = `ユーザー:ctx.params.id $ {}、{$` ctx.params.name}; // フォームのPOST ctx.body = `ボディ:JSON $ { .stringify(ctx.request.body) `}; }; // 注:POSTリクエストが直接与えられて開始:「秘密がありません」 // 理由:検証値をCSRFするフォームのPOSTリクエストのためのインナーフレームを、我々ので、フォームが送信される際、持参CSRFキーはセキュリティ上の脅威の防止を参照して、提出してくださいCSRF //プラグイン卵セキュリティに組み込まれたセキュリティフレームワークなので、いくつかのデフォルトのセキュリティプラクティスを提供し、セキュリティプラグインフレームワークは、デフォルトで有効になって、あなたには、いくつかのセキュリティをクローズする必要がある場合は、プロパティの直接設定を有効にすることはfalseです。 // 配置された設定/ config.default.jsで exports.security = {CSRF:偽へ };または= {CSRFのconfig.security:偽へ} // フォームの検証 // APP / router.js module.exportsは=アプリ= > { app.router.post( '/ユーザー' 、app.controller.user); }; // アプリ/コントローラ/ user.jsの CONST createRule = { 名:{ タイプ: 'メールで送信' 、 }、 パスワード:{ タイプ: 'パスワード' 、 比較: '再password'を、 }、 }; exports.create =非同期CTX => { // パリティエラー例外がスローされます場合 ctx.validate(createRuleを); ctx.body = ctx.request.body; } ; // マルチルートマップ // APP / router.js module.exportsはアプリ= => { 必要とする( './router/news' )(APP); 必要( ' ./router/admin' )(APP); } ; // アプリケーション/ルータ/ news.js module.exportsはアプリケーション= => { app.router.get( '/ニュース/一覧' 、app.controller.news.list)。 app.router.get('/ニュース/詳細' 、app.controller.news.detail)。 }。 // アプリ/ルーター/ admin.js module.exportsは=アプリ=> { app.router.get( '/管理者/ユーザー' 、app.controller.admin.user)。 app.router.get( '/管理/ログ' 、app.controller.admin.log)。 }。