WebApi路由名称转换为-分割

一、前言

适用于需要替换默认路由命名规则的情况。如控制器叫WebApi,会替换为web-api。

注意:仅适用于默认路由,如果使用了命名路由,将以自定义命名为准。

二、新建转换规则

	/// <summary>
    /// 路由格式转换
    /// </summary>
    public class RouteTokenTransformer : IOutboundParameterTransformer
    {
        /// <summary>
        /// 将大驼峰转换为-分割
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public string? TransformOutbound(object? value)
        {
            return value == null ? null : Regex.Replace(value.ToString()!, "([a-z])([A-Z])", "$1-$2").ToLower();
        }
    }

三、使用

builder.Services.AddControllers(options =>
{
    options.Conventions.Add(new RouteTokenTransformerConvention(new RouteTokenTransformer()));
})

参考:https://stackoverflow.com/questions/40334515/automatically-generate-lowercase-dashed-routes-in-asp-net-core

posted @ 2022-04-24 14:29  gaozejie  阅读(83)  评论(0)    收藏  举报