{"id":1155,"date":"2022-04-19T09:59:12","date_gmt":"2022-04-19T01:59:12","guid":{"rendered":"http:\/\/www.wayln.com\/?p=1155"},"modified":"2022-05-13T11:28:06","modified_gmt":"2022-05-13T03:28:06","slug":"using-url-routing","status":"publish","type":"post","link":"https:\/\/www.wayln.com\/?p=1155","title":{"rendered":"Using URL Routing"},"content":{"rendered":"<div id=\"toc_container\" class=\"toc_transparent no_bullets\"><p class=\"toc_title\">Contents<\/p><ul class=\"toc_list\"><li><a href=\"#The_IEndpointRouteBuilder_Extension_Methods\"><span class=\"toc_number toc_depth_1\">1<\/span> The IEndpointRouteBuilder Extension Methods<\/a><\/li><li><a href=\"#endpoint\"><span class=\"toc_number toc_depth_1\">2<\/span> \u6dfb\u52a0\u8def\u7531\u4e2d\u95f4\u4ef6\u548c\u5b9a\u4e49\u4e00\u4e2aendpoint<\/a><\/li><li><a href=\"#i\"><span class=\"toc_number toc_depth_1\">3<\/span> \u8def\u7531\u65b9\u5f0f<\/a><ul><li><a href=\"#appUseEndpoints\"><span class=\"toc_number toc_depth_2\">3.1<\/span> app.UseEndpoints<\/a><\/li><li><a href=\"#i-2\"><span class=\"toc_number toc_depth_2\">3.2<\/span> \u4f7f\u7528\u4e2d\u95f4\u4ef6<\/a><\/li><li><a href=\"#i-3\"><span class=\"toc_number toc_depth_2\">3.3<\/span> \u7b80\u5316\u7684\u7ba1\u9053\u914d\u7f6e<\/a><\/li><li><a href=\"#URL\"><span class=\"toc_number toc_depth_2\">3.4<\/span> \u5728URL\u6a21\u5f0f\u4e2d\u4f7f\u7528\u6bb5\u53d8\u91cf<\/a><\/li><li><a href=\"#URL-2\"><span class=\"toc_number toc_depth_2\">3.5<\/span> \u4ece\u8def\u7531\u751f\u6210URL<\/a><\/li><li><a href=\"#i-4\"><span class=\"toc_number toc_depth_2\">3.6<\/span> \u4e3a\u5b57\u6bb5\u53d8\u91cf\u4f7f\u7528\u9ed8\u8ba4\u503c<\/a><\/li><li><a href=\"#URL-3\"><span class=\"toc_number toc_depth_2\">3.7<\/span> \u5728URL\u6a21\u5f0f\u4e2d\u4f7f\u7528\u53ef\u9009\u5b57\u6bb5<\/a><\/li><li><a href=\"#catchall\"><span class=\"toc_number toc_depth_2\">3.8<\/span> \u4f7f\u7528catchall\u5b57\u6bb5\u53d8\u91cf<\/a><\/li><li><a href=\"#i-5\"><span class=\"toc_number toc_depth_2\">3.9<\/span> \u7ea6\u675f\u5b57\u6bb5\u5339\u914d<\/a><\/li><li><a href=\"#i-6\"><span class=\"toc_number toc_depth_2\">3.10<\/span> \u7ea6\u675f\u5339\u914d\u5230\u4e00\u7ec4\u7279\u5b9a\u7684\u503c<\/a><\/li><li><a href=\"#Fallback\"><span class=\"toc_number toc_depth_2\">3.11<\/span> \u5b9a\u4e49Fallback\u8def\u7531<\/a><\/li><\/ul><\/li><li><a href=\"#i-7\"><span class=\"toc_number toc_depth_1\">4<\/span> \u9ad8\u7ea7\u8def\u7531\u5c5e\u6027<\/a><ul><li><a href=\"#i-8\"><span class=\"toc_number toc_depth_2\">4.1<\/span> \u521b\u5efa\u81ea\u5b9a\u4e49\u7ea6\u675f<\/a><\/li><\/ul><\/li><\/ul><\/div>\n<h1><span id=\"The_IEndpointRouteBuilder_Extension_Methods\">The IEndpointRouteBuilder Extension Methods<\/span><\/h1>\n<table>\n<thead>\n<tr>\n<th>Name<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>MapGet(pattern,endpoint)<\/td>\n<td>routes HTTP GET requests that match the  URL pattern to the endpoint<\/td>\n<\/tr>\n<tr>\n<td>MapPost(pattern,endpoint)<\/td>\n<td>This method routes HTTP POST requests that match the URL pattern to the endpoint<\/td>\n<\/tr>\n<tr>\n<td>MapPut(pattern,endpoint)<\/td>\n<td>routes HTTP PUT requests that match the URL pattern to the endpoint<\/td>\n<\/tr>\n<tr>\n<td>MapDelete(pattern,endpoint)<\/td>\n<td>routes HTTP DELETE requests that match the URL pattern to the endpoint<\/td>\n<\/tr>\n<tr>\n<td>MapMethods(pattern,methods,endpoint<\/td>\n<td>routes requests made with one of the specified HTTP methods that match the URL pattern to the endpoint<\/td>\n<\/tr>\n<tr>\n<td>Map(pattern,endpoint)<\/td>\n<td>routes all HTTP requests that match the URL pattern to the endpoint<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h1><span id=\"endpoint\">\u6dfb\u52a0\u8def\u7531\u4e2d\u95f4\u4ef6\u548c\u5b9a\u4e49\u4e00\u4e2aendpoint<\/span><\/h1>\n<ol>\n<li>UseRouting\u65b9\u6cd5\u6dfb\u52a0\u4e2d\u95f4\u4ef6\u6765\u54cd\u5e94\u7ba1\u9053\u4e2d\u7684\u8bf7\u6c42<\/li>\n<li>UseEndpoint\u65b9\u6cd5\u4f7f\u7528\u7aef\u70b9\u6765\u5339\u914dURL<\/li>\n<\/ol>\n<h1><span id=\"i\">\u8def\u7531\u65b9\u5f0f<\/span><\/h1>\n<h2><span id=\"appUseEndpoints\">app.UseEndpoints<\/span><\/h2>\n<pre><code class=\"language-CSharp line-numbers\">app.UseEndpoints(endpoints=&gt;{endpoints.MapGet(\"routing\",async context=&gt;{\nawait context.Response.WriteAsync(\"Request Was Routed\");\n})})\n<\/code><\/pre>\n<h2><span id=\"i-2\">\u4f7f\u7528\u4e2d\u95f4\u4ef6<\/span><\/h2>\n<pre><code class=\"language-CSharp line-numbers\">app.UseEndpoints(endpoints=&gt;{\n    endpoints.MapGet(\"capital\/uk\",new Capital().Invoke);\n});\n<\/code><\/pre>\n<h2><span id=\"i-3\">\u7b80\u5316\u7684\u7ba1\u9053\u914d\u7f6e<\/span><\/h2>\n<p>WebApplication\u7c7b\u5b9e\u73b0\u4e86IEndpointRoutedBuilder\u63a5\u53e3\uff0c\u53ef\u4ee5\u66f4\u7b80\u6d01\u7684\u521b\u5efa\u63a5\u53e3<\/p>\n<pre><code class=\"language-CSharp line-numbers\">app.MapGet(\"capital\/uk\",new Capital().Invoke);\n<\/code><\/pre>\n<h2><span id=\"URL\">\u5728URL\u6a21\u5f0f\u4e2d\u4f7f\u7528\u6bb5\u53d8\u91cf<\/span><\/h2>\n<pre><code class=\"language-CSharp line-numbers\">app.MapGet(\"{first}\/{second}\/{third}\",async context=&gt;{\n    await context.Response.WriteAsync(\"Request Was Routed\\n\");\n    foreach(var kvp in context.Request.RouteValues)\n    {\n        await context.Response.WriteAsync($\"{kvp.Key}:{kvp.Value}\\n\");\n}\n})\n<\/code><\/pre>\n<h2><span id=\"URL-2\">\u4ece\u8def\u7531\u751f\u6210URL<\/span><\/h2>\n<pre><code class=\"language-CSharp line-numbers\">app.MapGet(\"population\/{city}\",Population.Endpoint).WithMetaata(new RouteNameMetadata(\"population\"));\n<\/code><\/pre>\n<h2><span id=\"i-4\">\u4e3a\u5b57\u6bb5\u53d8\u91cf\u4f7f\u7528\u9ed8\u8ba4\u503c<\/span><\/h2>\n<pre><code class=\"language-Csharp line-numbers\">app.MapGet(\"capital\/{contry=France}\",Capital.Endpoint);\n<\/code><\/pre>\n<h2><span id=\"URL-3\">\u5728URL\u6a21\u5f0f\u4e2d\u4f7f\u7528\u53ef\u9009\u5b57\u6bb5<\/span><\/h2>\n<p>\u9700\u8981\u5728\u4e2d\u95f4\u4ef6\u4e2d\u8bbe\u7f6e\u503c<\/p>\n<pre><code class=\"language-CSharp line-numbers\">app.MapGet(\"size\/{city?}\",Population.Endpoint);\n<\/code><\/pre>\n<h2><span id=\"catchall\">\u4f7f\u7528catchall\u5b57\u6bb5\u53d8\u91cf<\/span><\/h2>\n<pre><code class=\"language-Csharp line-numbers\">app.MapGet(\"{first}\/{second}\/{*catchall}\");\n<\/code><\/pre>\n<h2><span id=\"i-5\">\u7ea6\u675f\u5b57\u6bb5\u5339\u914d<\/span><\/h2>\n<pre><code class=\"language-csharp line-numbers\">app.MapGet(\"{first:int}\/{second:bool}\",async context=&gt;{\n\n});\n<\/code><\/pre>\n<h2><span id=\"i-6\">\u7ea6\u675f\u5339\u914d\u5230\u4e00\u7ec4\u7279\u5b9a\u7684\u503c<\/span><\/h2>\n<pre><code class=\"language-chsarp line-numbers\">app.MapGet(\"capital\/{country:regx(^uk|france|monaco$)}\",capital.Endpoint);\n<\/code><\/pre>\n<h2><span id=\"Fallback\">\u5b9a\u4e49Fallback\u8def\u7531<\/span><\/h2>\n<pre><code class=\"language-csharp line-numbers\">app.MapFallback(async context=&gt;{\n    await context.Response.WriteAsync(\"Routed to fallback endpoint\");\n})\n<\/code><\/pre>\n<h1><span id=\"i-7\">\u9ad8\u7ea7\u8def\u7531\u5c5e\u6027<\/span><\/h1>\n<h2><span id=\"i-8\">\u521b\u5efa\u81ea\u5b9a\u4e49\u7ea6\u675f<\/span><\/h2>\n<p>\u9700\u8981\u81ea\u5df1\u5c06\u5efa\u7ee7\u627f\u81eaIRouteConstraint\u7c7b\uff0c\u5b9e\u73b0Match\u65b9\u6cd5<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Contents1 The IEndpointRouteBuilder Extension Methods2  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[44,4,2],"tags":[],"class_list":["post-1155","post","type-post","status-publish","format-standard","hentry","category-asp-net-core","category-c","category-2"],"_links":{"self":[{"href":"https:\/\/www.wayln.com\/index.php?rest_route=\/wp\/v2\/posts\/1155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wayln.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wayln.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wayln.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wayln.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1155"}],"version-history":[{"count":9,"href":"https:\/\/www.wayln.com\/index.php?rest_route=\/wp\/v2\/posts\/1155\/revisions"}],"predecessor-version":[{"id":1177,"href":"https:\/\/www.wayln.com\/index.php?rest_route=\/wp\/v2\/posts\/1155\/revisions\/1177"}],"wp:attachment":[{"href":"https:\/\/www.wayln.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wayln.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wayln.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}