首页 > 其他分享 >validate

validate

时间:2024-04-14 18:22:05浏览次数:25  
标签:modelState errors next context var validate public

public class ModelValidationMiddleware
{
    private readonly RequestDelegate _next;

    public ModelValidationMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext context)
    {
        if (!context.Request.Path.StartsWithSegments("/api"))
        {
            await _next(context);
            return;
        }

        var modelState = context.Features.Get<Microsoft.AspNetCore.Mvc.ModelBinding.Validation.IValidationFeature>()?.ModelState;
        if (modelState != null && !modelState.IsValid)
        {
            var errors = modelState.Values.SelectMany(v => v.Errors.Select(e => e.ErrorMessage)).ToList();
            var response = new ApiResponse(false, "Model validation failed", errors: errors);
            context.Response.StatusCode = 400; // Bad Request
            context.Response.ContentType = "application/json";

            var responseText = JsonSerializer.Serialize(response);
            await context.Response.WriteAsync(responseText);
            return;
        }

        await _next(context);
    }
}

标签:modelState,errors,next,context,var,validate,public
From: https://www.cnblogs.com/miaokela/p/18134494

相关文章

  • httprunner 4.x学习 - 04提取(extract)和校验(validate)
    前言支持2种响应结果字段提取方式:1.jmespath表达式:响应结果为JSON结构,采用jmespath表达式进行参数提取。参考教程https://jmespath.org/tutorial.html2.正则表达式(regex):返回的非JSON 格式,可以用正则表达式(regex)提取。需要具备一定的正则知识extract提取返......
  • element-ui表单校验:有值却不通过 el-form validate
    解决:新增/编辑赋值的时候,所有明明有值校验不通过的属性使用$set赋值this.$set(this.form,"属性名","");//新增置空this.$set(this.form,"属性名",row.shuxing);//编辑赋值 ......
  • @Validated 和 @Valid的区别
    总的来说,两者都是用于参数校验;@Validated额外支持分组验证机制,@Valid额外支持嵌套验证机制 SpringValidation验证框架对参数的验证机制提供了@Validated(Spring'sJSR-303规范,是标准JSR-303的一个变种);校验不通过的时候程序就会抛出org.springframework.validation.BindExcepti......
  • drf : source,定制序列化字段以及反序列化新增。局部钩子(validate_字段名),全局钩子(va
    source,SerializerMethodField,局部钩子,全局钩子serialzer.py:source用处对应字段:起别名,用处2对应方法:在表模型中定义一个方法,source可以与其关联用处3对应方法:可以当做字段第三种方法的扩展用法:使用程度高。model.pyfromdjango.dbimportmodels#Createyourmo......
  • Spring-@Validated-参数校验
    1.什么是javax.validationJSR303是一套JavaBean参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们JavaBean的属性上面(面向注解编程的时代),就可以在需要校验的时候进行校验了,在SpringBoot中已经包含在starter-web中,再其他项目中可以引用依赖,并自行......
  • VSTO:WinForms如何引用Ribbon.Invalidate
    问题描述:近期项目需要在VSTO插件中设计WinForms界面,该界面需要实现一个功能:当WinForms从外部应用中获取数据后,将其传递到editbox显示栏内。项目开发中遇到以下问题:WinForms中实例化Ribbon后,再引用其中的函数或Invalidate功能,在运行时会报错:System.NullReferenceException:“未将......
  • 统一异常处理@ControllerAdvice及参数校验@Validated
    一、异常处理有异常就必须处理,通常会在方法后面throws异常,或者是在方法内部进行trycatch处理。直接throwsException直接throwsException,抛的异常太过宽泛,最好能抛出准确的异常,比如throwsIOException之类。UsergetUserById(Integerid)throwsIOException,BusinessE......
  • SWR " stale-while-revalidate " 立即使用缓存数据 + 后台异步刷新
    在软件开发中,SWR是"stale-while-revalidate"的首字母缩写,这是一种在网络应用(尤其是Web应用)中用于数据获取和缓存的策略。这个策略最早由Next.js团队提出并在其数据获取库next/swr中实现了这个思想。SWR的工作原理如下:立即使用缓存数据:当页面首次加载或数据需要更......
  • @Valid和@Validated区别
    @Valid和@Validated都是用来在Java中进行数据校验的注解,但它们来自不同的框架并服务于不同的目的:@Valid:@Valid是JavaEE(现在是JakartaEE)规范的一部分,具体来说是JSR303/JSR349(BeanValidation)的标准注解。它用于验证对象属性,当使用在方法参数上时,会在方法调用前自动触发......
  • (python)代码学习||2024.2.3||题目是codewars上的【Validate Sudoku with size `NxN`
    题目的要求是写一个Sudoku类,类中要有一个实例函数判断传给对象的二维数组是否符合数独规则题目链接:https://www.codewars.com/kata/540afbe2dc9f615d5e000425/python下面是写完题后看到的别人的解决方法fromitertoolsimportchainclassSudoku(object):def__init__......