我如何在网络 api 中验证这个无效的 属性?

how can I validate this invalid property in web api?

我有一个用户搜索请求对象,如下所示:

UserSearchRequest
{
    FirstName:"John",
    LastName:"Smith",
    Expand:["groups","devices"]
}

Expand 是可选参数。我有验证,检查提供的 Expand 参数是否在薄的预期参数集中。问题是,如果客户端提交这样的请求:

{
    FirstName:"John",
    LastName:"Smith",
    Expand:1
}

默认情况下,Web API 2 会将此请求传递给 Expand 值为 null 的控制器方法。所以用户不会知道他提交了错误的请求,控制器也无法将其识别为错误的请求 b/c null 是此 属性 的有效值。有没有办法覆盖此默认行为?

动作过滤器在控制器执行其逻辑之前被触发。我将大致说明您需要做什么才能使您走上正轨。

ActionFilter 的第一个要求是通过扩展 ActionFilterAttribute class。

创建您自己的过滤器 class

以下是此示例

public class ValidateCustomModel : ActionFilterAttribute
    {
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            //Write your logic to check that all attributes are not null
        }
    }

现在进入第二步。此步骤将在 WebApiConfig class 中注册您的过滤器,以便应用程序知道它必须在使用该属性的任何地方将请求传递给此过滤器

config.Filters.Add(new ValidateModelAttribute());

现在第三步是调用自定义 class 作为用户发出请求时正在执行的控制器方法的属性。

[ValidateModel]

希望这可以帮助您根据自己的逻辑对其进行自定义。编码愉快。