수색…
기본 라우팅
app.UseMvc(routes => 
{ 
    routes.MapRoute( 
    name: "default", 
    template: "{controller=Home}/{action=Index}/{id?}"); 
}); 
  이 명령은 /Home/Index , /Home/Index/123 및 / 
라우팅 제약
매개 변수를 특정 값 또는 패턴으로 제한하기 위해 경로 내부에서 사용할 수있는 사용자 지정 라우팅 제약 조건을 만들 수 있습니다.
이 제한은 en-US, de-DE, zh-CHT, zh-Hant와 같은 일반적인 문화권 / 지역 패턴과 일치합니다.
public class LocaleConstraint : IRouteConstraint
{
    private static readonly Regex LocalePattern = new Regex(@"^[a-z]{2}(-[a-z]{2,4})?$",
                                    RegexOptions.Compiled | RegexOptions.IgnoreCase);
    public bool Match(HttpContext httpContext, IRouter route, string routeKey,
                        RouteValueDictionary values, RouteDirection routeDirection)
    {
        if (!values.ContainsKey(routeKey))
            return false;
        string locale = values[routeKey] as string;
        if (string.IsNullOrWhiteSpace(locale))
            return false;
        return LocalePattern.IsMatch(locale);
    }
}
그런 다음 제약 조건을 등록해야 경로에서 사용할 수 있습니다.
services.Configure<RouteOptions>(options =>
{
    options.ConstraintMap.Add("locale", typeof(LocaleConstraint));
});
이제는 경로 내에서 사용할 수 있습니다.
컨트롤러에서 사용하기
[Route("api/{culture:locale}/[controller]")]
public class ProductController : Controller { }
액션에 사용하기
[HttpGet("api/{culture:locale}/[controller]/{productId}"]
public Task<IActionResult> GetProductAsync(string productId) { }
기본 경로에서 사용
app.UseMvc(routes => 
{ 
    routes.MapRoute( 
        name: "default", 
        template: "api/{culture:locale}/{controller}/{id?}"); 
    routes.MapRoute( 
        name: "default", 
        template: "api/{controller}/{id?}"); 
});
Modified text is an extract of the original Stack Overflow Documentation
        아래 라이선스 CC BY-SA 3.0
        와 제휴하지 않음 Stack Overflow