using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; namespace Fengling.Platform.Domain.AggregatesModel.GatewayAggregate; /// /// 路由匹配配置(值对象) /// 对应 YARP 的 RouteMatch,以 JSON 存储在数据库中 /// public class GwRouteMatch { /// /// 路径匹配模式 /// public string Path { get; set; } = string.Empty; /// /// HTTP 方法列表(如 ["GET", "POST"]) /// public List? Methods { get; set; } /// /// Host 匹配列表(如 ["api.example.com", "*.example.com"]) /// public List? Hosts { get; set; } /// /// Header 匹配规则 /// [NotMapped] [JsonInclude] public List? Headers { get; set; } /// /// 查询参数匹配规则 /// [NotMapped] [JsonInclude] public List? QueryParameters { get; set; } } /// /// Header 匹配规则(值对象) /// public class GwRouteHeader { /// /// Header 名称 /// public string Name { get; set; } = string.Empty; /// /// 匹配值列表 /// public List Values { get; set; } = []; /// /// 匹配模式 /// public GwHeaderMatchMode Mode { get; set; } = GwHeaderMatchMode.ExactHeader; /// /// 是否区分大小写 /// public bool IsCaseSensitive { get; set; } = false; } /// /// 查询参数匹配规则(值对象) /// public class GwRouteQueryParameter { /// /// 参数名称 /// public string Name { get; set; } = string.Empty; /// /// 匹配值列表 /// public List Values { get; set; } = []; /// /// 匹配模式 /// public GwQueryParameterMatchMode Mode { get; set; } = GwQueryParameterMatchMode.Exact; /// /// 是否区分大小写 /// public bool IsCaseSensitive { get; set; } = false; } /// /// Header 匹配模式 /// public enum GwHeaderMatchMode { ExactHeader = 0, Prefix = 1, Contains = 2, NotContains = 3, Exists = 4 } /// /// 查询参数匹配模式 /// public enum GwQueryParameterMatchMode { Exact = 0, Contains = 1, Prefix = 2, Exists = 3 }