在 ServiceStack 的元数据页面中反映 AbstractValidator 规则
Reflect AbstractValidator rules in ServiceStack's metadata page
假设您有以下简化的 CustomerRequest class:
public class CustomerRequest : IReturn<CustomerResponse>
{
public string OrgNumber { get; set; }
}
对于此请求,您有以下验证器:
public CustomerValidator()
{
RuleFor(r => r.OrgNumber).NotEmpty();
}
如果您在 http://[myService]/json/metadata?op=CustomerRequest 上查看 ServiceStack 自动生成的元数据页面,它将如下所示:
需要名称参数数据类型
OrgNumber 正文字符串 否
如您所见,参数被标记为 "Required: No",即使验证器要求它存在且不为空。
是否可以在元数据中自动反映验证者的规则?我知道我可以使用 [ApiMember(IsRequired = false)]
,但如果可能的话,我更愿意将它绑定到验证器。
只有声明性属性显示在元数据页面上,因为它们可以静态推断,任何在运行时注册的验证器都是不透明的,无法由 ServiceStack 静态推断。
假设您有以下简化的 CustomerRequest class:
public class CustomerRequest : IReturn<CustomerResponse>
{
public string OrgNumber { get; set; }
}
对于此请求,您有以下验证器:
public CustomerValidator()
{
RuleFor(r => r.OrgNumber).NotEmpty();
}
如果您在 http://[myService]/json/metadata?op=CustomerRequest 上查看 ServiceStack 自动生成的元数据页面,它将如下所示:
需要名称参数数据类型 OrgNumber 正文字符串 否
如您所见,参数被标记为 "Required: No",即使验证器要求它存在且不为空。
是否可以在元数据中自动反映验证者的规则?我知道我可以使用 [ApiMember(IsRequired = false)]
,但如果可能的话,我更愿意将它绑定到验证器。
只有声明性属性显示在元数据页面上,因为它们可以静态推断,任何在运行时注册的验证器都是不透明的,无法由 ServiceStack 静态推断。