前の記事で、私たちは伝統的な価値観、動的ルーティングを取得し、我々はルートを見KOAこの章で、ローカルに単純なプロジェクトを開始することができました。
A、興亜ルート
ルーティング(ルーティング)は、URI(またはパスを呼び出す)、アプリケーションがWebサイトのノードへのクライアントアクセスにどのように応答するかに関連する特定のHTTPメソッド(など、POSTをGET)からなる、です。
人気の話:ルーティングは異なるURLアドレスに基づいており、異なる機能のための別のページをロードします。
興亜ルーティングおよびExpressは、ExpressがExpressで直接導入、あなたがルートを設定することができ、異なっているが、興亜では、我々は対応KOA-ルータのルーティングモジュールをインストールする必要があります。
NPM KOA-ルータ--saveをインストール
私たちは、次のように読み取るために、私たちのapp.jsファイルを書き込むために1つのプロジェクトのディレクトリに行ってきました:
1 // 導入KOAモジュール 2 VAR興亜は( 'KOA'要する= ); 3 VARのルータ=必要とする( 'KOA-ルータ' ); 4 5。 // インスタンス化 6。 VARアプリ= 新しい新しい興亜(); 7 VARのルータ= 新しい新ルーター(); 8。 9。 // ルートを設定 10 router.get( '/'、非同期(CTX)=> { 11。 // CTXコンテキストコンテキストは、要求と応答情報含む 12 // に対応するデータを返す:内部原res.writeHead()res.end() 13は ctx.body = 'ホーム' ; 14 }); 15 router.get( '/ニュース'、非同期(CTX)=> { 16 ctx.body = "ニュースページ" ; 17 }); 18である 。19 // ルート開始 20である app.use(router.routes() ); 21 app.use(router.allowedMethods()); 22 / * * 23 router.allowedMethods()関数:これは公式文書の推奨用法である、我々はできる 24 (router.allowedMethodsを参照)、ルーティングのマッチングルータで使用されています.routes()ので、ときに、すべての後に 25 。この時点で、配置されたレスポンスヘッダctx.statusミドルウェア応答をルーティングする最後の呼び出しに応じて 26 に配置されなくてもよいように構成されてもよい、構成、推奨される 27 * / 28 29 app.listen(3000)。
上記のコードでは、設定するには、KOA-ルータモジュールを導入している私のルーティング何、特定の操作我々はrouter.get()双方向ルーティングアドレス「/」と「/ニュース」を定義する、呼び出しを渡されます次のようにそれぞれが異なるコンテンツを返すルーティングページは、最終的な結果は以下のとおりです。
私たちが入力したときに、次のようにポートがした後、我々は地元でプロジェクトを始めたとき、ポート3000の後に、「/」と入力しますが、「/ニュース」、ページがまだあることを示しています。
あなたは、異なる経路が私たちのルートが設定されている説明するために、異なるコンテンツを表示することができます見ることができます。
しかし、実際には私たちは、このようにブラウザのURLアドレスが表示されますのhttp:// localhostの:? 3000 /ニュースID = 1&タイトル= AAA
その後、我々はその背後にある伝統的な価値観を受信するためにどのような背景には、次のコードを変更します?:
1 // 導入KOAモジュール 2 VAR興亜は( 'KOA'要する= ); 3 VARのルータ=必要とする( 'KOA-ルータ' ); 4 5。 // インスタンス化 6。 VARアプリ= 新しい新しい興亜(); 7 VARのルータ= 新しい新ルーター(); 8。 9。 // ルートを設定 10 router.get( '/'、非同期(CTX)=> { 11。 // CTXコンテキストコンテキストは、要求と応答情報含む 12 // に対応するデータを返す:内部原res.writeHead()res.end() 13は ctx.body = 'ホーム' ; 14 }); 15 router.get( '/ニュース'、非同期(CTX)=> { 16 / * * 。17 GET要求によってkoa2伝統的な値を受信し、が、2つの受信方法がある:クエリとのQueryStringは 18であり、 クエリ:フォーマットされたパラメータオブジェクトを返します。 19。 のQueryString:リクエスト文字列が返されます。 20 * / 21は 22である // パスを取得CTXから値を読み取る 23である にconsole.log(ctx.url); // /ニュース?タイトル=&= 1のID AAA。 24 にconsole.log(ctx.query); // {ID:」1' 、タイトル: 'AAA'は} ******最も推奨される方法で取得したオブジェクトである 25 にconsole.log (ctx.querystring); // 。ID =&タイトル= AAA取得した1文字列である 26である 27 // CTX値通過取得要求中に入る 28 はconsole.log(ctx.request.urlを); // /ニュース1&タイトルID = AAA =? 29 にconsole.log(ctx.request.query); // {ID: '1'は、タイトル: 'AAAは '} オブジェクト 30 ;にconsole.log(ctx.request.querystring) // 。ID = AAA = 1&タイトル 31は = "ニュースページ" ctx.body ; 32 }); 33は 34であるが 、// ルートを開始 35 app.use(router.routes()); 36 app.use(router.allowedMethods()); 37 / * * 38 router.allowedMethods()関数:これは公式文書の推奨用法である、我々はできる 39 router.allowedMethodsを見た後()すべての際にマッチングルートrouter.routes()で使用される 40 。このとき最初の応答に応じて、が設けられ、中間ルーティング係るctx.status最後の呼び出し 41を 構成することができるが、提案された構成に配置されなくてもよいです、 42である * / 43であり、 44はされ(3000)app.listen。
ルーティング私たちは、缶に(「/ニュース」)router.get。我々はCTXによって渡さ取得したい値を取得するには、CTXは、我々は3を選択したコンテンツの多くは、URL、クエリ、クエリ文字列を出力します、さらにまた、3つのコンテンツctx.requestを含む、出力結果は同じです。私たちは、ctx.queryの形態であることが値によって渡されるお勧めします。我々は結果を見て:
我々は、コンソール出力ログ・エディタを見て、上記のブラウザのアドレスに入力して、返します。
私たちは、上記の方法の値を渡したいデータを取得するために取得することができます。
私たちが見てきた状況があります場合はありませんが、され ます。http:// localhostを:3000 /ニュース / 123
これは上記の場合であれば、我々は必要な背景で構成: ルータ(「/ニュース/ 123」、非同期()=> {}) /ニュース/ 123は、別の続くことができる場合、これは、明らかに可能です次のようにコンテンツが、その後、我々はまた、これは明らかに望ましくない、対応するルートを記述するために、我々は、ダイナミックルーティングを導入する必要があり、この時間が必要になります。
1 // 導入KOAモジュール 2 VAR興亜は( 'KOA'要する= ); 3 VARのルータ=必要とする( 'KOA-ルータ' ); 4 5。 // インスタンス化 6。 VARアプリ= 新しい新しい興亜(); 7 VARのルータ= 新しい新ルーター(); 8。 9。 // ルートを設定 10 router.get( '/'、非同期(CTX)=> { 11。 // CTXコンテキストコンテキストは、要求と応答情報含む 12 // に対応するデータを返す:内部原res.writeHead()res.end() 13は ctx.body = 'ホーム' ; 14 }); 15 router.get( '/ニュース/:ID'、非同期(CTX)=> { 16 / * * 。17の 取得通過動的ルーティングパラメータ 18 * / 19 20である // CTXからの値は、パス取得読み取る 21であり、 コンソール.logの(ctx.url); // /ニュース/ 123 22である にconsole.log(ctx.params); // {ID: '123'} 23は ctx.body = "ニュースページ" ; 24 }); 25 26であります / / 経路を開始 27 app.useを(router.routes()); 28 app.use(router.allowedMethods()); 29 / * * 30 router.allowedMethods()関数は:これは、公式文書の推奨用法である、我々はできる 31は 、()ルーティングマッチングrouter.routes(に使用されている)router.allowedMethods後にそうする場合、すべての参照 32 この時点でルートミドルウェア最後の呼び出しを。応答は、応答ctx.statusヘッドに設けられている 33が 配置されなくてもよいように構成されてもよい、提案された構成、 34である * / 35 36 app.listen(3000)。
(「:ID /ニュース/」、)フォーム、そしてあなたは、我々は質量の参加を取得したいctx.paramsを介して取得することができ、その結果私たちは前にrouter.get(「/ニュース」、)の代わりにrouter.getます次のように:
我々は、コンソール出力ログ・エディタを見て、上記のブラウザのアドレスに入力して、返します。
私たちは、上記の方法の値を渡したいデータを取得するために取得することができます。