Coreを学習メモです。ルートについて学んでいきます。ルーティングミドルウェアを使って、受信したHTTPリクエストのマッチングを行い、対応したコントローラーにがリクエストを処理できるようにします。複数のルーティング設定はできますが、マッチングの順番は先に定義したルーティングが優先されます。action)があり、ルーティングマッチングした場合に、リクエストが処理される。この2つのパラメータが1つでも存在しないと、ルートが正しく動作できません。前回作成したプログラムに対して、少し追加をします。Controllersフォルダに新しくTutorialController.csクラスを作成して、下記のように実装します。パラメータを使用したルーティング配置Startup.csにルーティング設定を追加します。"{controller}/{action}/{name}/{age}");このルーティング設定にマッチングするURLtutorial/welcome/dongsu/18このルーティング設定にマッチングしないURLtutorial/welcome/dongsuもし、ageパラメータ無くてもURLをマッチングさせたい場合、ageを任意パラメータに変更することもできます。{age}から{age?}に変更します。});このルーティング設定にマッチングするURLdongchuan/indexdongchuan/welcometemplateにcontrollerの引数がないため、defaultsにcontrollerの初期値の指定が必要です。ルート制約とはルートはルートパラメーターに関連付けされた検証ルールを用いて制約をかけることもできます。制約かけるためにはStartup.csの名前空間に必要モジュールを追加します。});このルーティング設定にマッチングするURLwelcome/dongsuwelcome/domwelcome/daisukeこのルーティング設定にマッチングしないURLwelcome/d1welcome/dMwelcome/miwaここでnameに対して、正規表現を使って制約をかけました。カスタム制約Commonフォルダを作成して、NameRouteConstraint.csのクラスを作成し、IRouteConstraintを実装します。}}nameパラメーターにadminというキーワードを含んではいけないようにしました。ds.Tutorial.web.Common;ConfigureServicesにカスタム制約を注入。});このルーティング設定にマッチングするURLok/dongsuok/sibataok/tomこのルーティング設定にマッチングしないURLok/adminok/rootadminok/dongsuISadminROOT属性ルーティング属性ルーティングはコントローラーメソッドをURLにバインドする1つの方法です。ルーティング設定ではなく、コントローラーメソッドに属性ルート(RouteAttribute)を使ってルートテンプレートを直接マップします。内部ではそれらのルート属性により、システムのルートテーブルが生成されます。コントローラーはルーティング設定or属性ルーティング1つしか使用できません。RouteAttributeでルーティング配置したら、Startup.csで配置したルーティング設定は無効になります。Controllersフォルダで新しくTestController.csクラスを作成し、下記通りに実装します。このアクションはリクエストURL/t/tに対して有効、Controllerのルート属性は無視できる例えば[Route(“/test/home”)]なら、内部では以下のようなルーティング設定が生成されます。個人的には特殊な場合を除き、下記のようにStartup.csにて初期値のルート定義だけで統一したほうが良いと思います。開発者の決定すべきことをなるべく減少させ、ビジネスロジックに集中させたほうが効率的に開発できます。今回作成したソースコードです。