如何仅执行servicestack请求验证代码

时间:2016-07-14 12:22:47

标签: servicestack

我想知道有没有办法向servicestack标记你只想为请求执行流畅的验证过滤器,而不是继续运行真正的代码?

理想情况下,您可以为任何请求添加属性,例如

`ExecuteValidationOnly = true`

这对于测试以及验证表单客户端非常有用。

感谢。

2 个答案:

答案 0 :(得分:2)

ServiceStack中没有内置这样的功能,但您可以轻松添加一个请求过滤器,该请求过滤器根据QueryString对请求进行短路,例如:

public class SkipRequestFeature : IPlugin
{
    public void Register(IAppHost appHost)
    {
        appHost.GlobalRequestFilters.Add((req, res, dto) => {
            if (req.QueryString["SkipRequest"] == "true")
                res.EndRequestWithNoContent();
        });
    }
}

在ValidationFeature之后注册插件,以便在验证后执行,例如:

Plugins.Add(new ValidationFeature());
Plugins.Add(new SkipRequestFeature());

答案 1 :(得分:1)

对于这种情况,我通常会对我的实际AbstractValidator<T>类进行单元测试,然后当我需要测试服务时,我会在验证器和设置验证调用上创建一个模拟器。

所以有一个MyValidatorTests类和一个MyServiceTests类。