fengling-platform/Fengling.Platform.Domain/AggregatesModel/GatewayAggregate/GwRouteMatch.cs
movingsam 033fcc9e9b refactor(gateway): 使用值对象替代字符串类型属性
- GwRouteMatch: 路由匹配配置值对象(Path, Methods, Hosts, Headers, QueryParameters)
- GwRouteHeader: Header 匹配规则值对象
- GwRouteQueryParameter: 查询参数匹配规则值对象
- GwLoadBalancingPolicy: 负载均衡策略枚举
- GwTransform: 请求/响应转换规则值对象
- EF Core 使用 ToJson() 将值对象映射为 JSON 列
2026-03-03 20:16:12 +08:00

108 lines
2.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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