Het URL-patroon dat hierboven wordt gebruikt, maakt gebruik van letterlijke segmenten, ook wel statische segmenten genoemd, die verzoeken matchen met behulp van vaste tekenreeksen.
Het eerste segment in het patroon komt alleen overeen met de verzoeken waarvan het pad bijvoorbeeld capital bevat als het eerste segment, en de het tweede segment in het patroon komt alleen overeen met de verzoeken waarvan het tweede segment uk is. Voeg deze samen en je begrijpt waarom
de route komt alleen overeen met de verzoeken waarvan het pad /capital/uk is.
Segment variables, ook wel route parameters genoemd, breiden het bereik van padsegmenten uit waarmee een patroonsegment kan matchen. Waardoor een flexibelere routering mogelijk is. Segmentvariabelen krijgen een naam en worden aangegeven met accolades (de tekens { and }), zie hieronder.
app.UseEndpoints(endpoints => {
endpoints.MapGet(“{first}/{second}/{third}”, async context => {
await context.Response.WriteAsync(“Request Was Routed\n”);
foreach (var kvp in context.Request.RouteValues) {
await context.Response
.WriteAsync($”{kvp.Key}: {kvp.Value}\n”);
}
Het URL-patroon {first}/{second}/{third} komt overeen met URL’s waarvan het pad drie segmenten bevat, ongeacht welke segmenten bevatten. Wanneer een segmentvariabele wordt gebruikt, voorziet de routeringsmiddleware het eindpunt van de inhoud van de URL padsegment waarmee ze overeenkomen. Deze inhoud is beschikbaar via de eigenschap HttpRequest.RouteValues, die a retourneert
RouteValuesDictionary-object. zie in onderstaande tabel de beschrijft van de nuttigste RouteValuesDictionary Members.
Er zijn enkele gereserveerde woorden die niet kunnen worden gebruikt als namen voor segmentvariabelen: action, area, controller, handler, and page.
[key] De klasse definieert een indexer waarmee waarden per sleutel kunnen worden opgehaald.
Sleutels Deze eigenschap retourneert de verzameling namen van segmentvariabelen.
Waarden Deze eigenschap retourneert de verzameling segmentvariabelewaarden.
Aantal Deze eigenschap retourneert het aantal segmentvariabelen.
BevatKey(key) Deze methode retourneert true als de routegegevens een waarde voor de opgegeven sleutel bevatten.
De klasse RouteValuesDictionary is opsombaar, wat betekent dat deze in een foreach-lus kan worden gebruikt om een reeks te genereren van KeyValuePair objecten, die elk overeenkomen met de naam van een segmentvariabele en de bijbehorende waarde geëxtraheerd uit de aanvraag-URL. Het eindpunt in somt de eigenschap HttpRequest.RouteValues op die moet worden gegenereerd
een antwoord met de namen en waarde van de segmentvariabelen die overeenkomen met het URL-patroon.
De namen van de segmentvariabelen zijn eerste, tweede en derde, en u kunt de waarden zien die uit de URL zijn geëxtraheerd door ASP.NET Core opnieuw opstarten en een URL met drie segmenten aanvragen, zoals http://localhost:5000/apples/oranges/cherries, wat de respons oplevert zie onderstaande printscreen.