欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.Net Web Api中利用FluentValidate进行参数验证的方法

程序员文章站 2022-03-21 15:22:04
前言 本文主要介绍了关于.net web api用fluentvalidate参数验证的相关内容,下面话不多说了,来一起看看详细的介绍吧。 方法如下 安装fluent...

前言

本文主要介绍了关于.net web api用fluentvalidate参数验证的相关内容,下面话不多说了,来一起看看详细的介绍吧。

方法如下

安装fluentvalidate

在asp.net web api中请安装 fluentvalidation.webapi版本

创建一个需要验证的model

 public class product 
 {
  public string name { get; set; }
  public string des { get; set; }
  public string place { get; set; }
 }

配置fluentvalidation,需要继承abstractvalidator类,并添加对应的验证规则

 public class productvalidator : abstractvalidator<product>
 {
  public productvalidator()
  {
   rulefor(product => product.name).notnull().notempty();//name 字段不能为null,也不能为空字符串
  }
 }

在config中配置 fluentvalidation

在 webapiconfig配置文件中添加

public static class webapiconfig
{
 public static void register(httpconfiguration config)
 {
  // web api routes
  ...
  fluentvalidationmodelvalidatorprovider.configure(config);
 }
}

验证参数

需要在进入controller之前进行验证,如果有错误就返回,不再进入controller,需要使用 actionfilterattribute

public class validatemodelstatefilter : actionfilterattribute
{
 public override void onactionexecuting(httpactioncontext actioncontext)
 {
  if (!actioncontext.modelstate.isvalid)
  {
   actioncontext.response = actioncontext.request.createerrorresponse(httpstatuscode.badrequest, actioncontext.modelstate);
  }
 }
}

如果要让这个过滤器对所有的controller都起作用,请在webapiconfig中注册

public static class webapiconfig
{
 public static void register(httpconfiguration config)
 {
  // web api configuration and services
  config.filters.add(new validatemodelstatefilter());

  // web api routes
  ...

fluentvalidationmodelvalidatorprovider.configure(config);
 }
}

如果指对某一个controller起作用,可以在controller注册

[validatemodelstatefilter]
public class productcontroller : apicontroller
{
 //具体的逻辑
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。