ルートnode_egg_router

// ルータルーティング
// ルータは、主に特定の要求の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)。
  }。

 

おすすめ

転載: www.cnblogs.com/JunLan/p/12536108.html