- GwRouteMatch: 路由匹配配置值对象(Path, Methods, Hosts, Headers, QueryParameters) - GwRouteHeader: Header 匹配规则值对象 - GwRouteQueryParameter: 查询参数匹配规则值对象 - GwLoadBalancingPolicy: 负载均衡策略枚举 - GwTransform: 请求/响应转换规则值对象 - EF Core 使用 ToJson() 将值对象映射为 JSON 列
108 lines
2.4 KiB
C#
108 lines
2.4 KiB
C#
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
|
||
} |