zoukankan      html  css  js  c++  java
  • P29 自定义错误信息和错误报告


    https://www.bilibili.com/video/BV1XJ411q7yy?p=29
    如果自定义错误信息。如何报告错误信息

    争对上一节讲的自定义属性

    这里也可以使用ErrorMessage参数,但是想要这个ErrorMessage正常的返回给我们的用户。必须要改一下自定义的Attribute里面的代码

    就是要把这块给改了

    首先我们这里先写点内容

    然后这里我们使用上面传入的ErrorMessage参数

    很简单,有个属性就叫做ErrorMessage

    折一下行


    测试

    错误信息和报告



    规定了错误信息的统一格式。原来我们只使用状态码的话,例如404 not found。这个状态码有时候不足以传达足够的信息。有时候对于我们人类的用户应该返回一个错误页面,上面有一些错误信息。




    还可以识别出错误是属于哪个API


    打开刚才的错误,首先是错误Type,我们打开这个链接地址。


    使用浏览器打开这个链接地址

    6.5.1是 400 Bad Request

    发生了一个或者是多个验证的错误。
    状态码status是400。我们之前讲过,对于这种实体验证的错误最好是返回422.

    traceId,日志里面可能会出现这个,用它可以查询日志具体的错误。


    下面就是要自定义这个返回的错误。

    startup

    我们队它进行设置。InvalidaModelStateResponseFactory它实际是一个action,这个action呢,我们可以对它进行设置。它会早Controller那个ModelState对象返回isvalid等于false的时候,它这个action就会被执行。

    下面就写一下这个action,首先是一个参数,里面又是莱姆达表达式。


    里面再new一个VlaidationProblemDetails 里面再传一个contex.ModelState

    在ModelState里面初始化一些值

    Type实际上我们可以自定义,

    Type就是下面的这个type,链接地址的这个。目前默认返回的是一个链接地址,官方的文档。

    我们可以自己实现一个链接,用户一旦发生错误,可以通过这个链接查找一些相关的内容。这里我们就先随便写一下。

    状态码,我们应该返回的是422

    422

    instance通常就是请求路径。

    增加traceId。用来做调用链的日志什么的

    最后返回这个结果类型。把我们的problemDetails类型传进去。

    然后它的格式需要设定一下。类型也是RC7807里面规定的。

    测试

    其他验证方式



    这是我们现在的验证方式。model类和验证信息规则都放在一个类面了。相当于是一个类干了两个活


    FluentValidation把验证规格和类分开了。相当于争对某一个Model再创建一个FluentValidation的验证类。。分离的好处呢就是容易进行单元测试。

    实际项目中,稍微复杂点的建议使用FluentValidation

    结束
     



     

  • 相关阅读:
    SPOJ GSS4 Can you answer these queries IV ——树状数组 并查集
    SPOJ GSS3 Can you answer these queries III ——线段树
    SPOJ GSS2 Can you answer these queries II ——线段树
    SPOJ GSS1 Can you answer these queries I ——线段树
    BZOJ 2178 圆的面积并 ——Simpson积分
    SPOJ CIRU The area of the union of circles ——Simpson积分
    HDU 1724 Ellipse ——Simpson积分
    HDU 1071 The area ——微积分
    HDU 4609 3-idiots ——FFT
    BZOJ 2194 快速傅立叶之二 ——FFT
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/14084607.html
Copyright © 2011-2022 走看看