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

    结束
     



     

  • 相关阅读:
    安装composer后报错proc_open(): fork failed
    ZOJ4063 Tournament [The 2018 ACM-ICPC Asia Qingdao Regional Contest]
    BZOJ1191: [HNOI2006]超级英雄Hero
    BZOJ1270: [BeijingWc2008]雷涛的小猫
    BZOJ1303 [CQOI2009]中位数图
    BZOJ1192 [HNOI2006]鬼谷子的钱袋
    BZOJ1003 [ZJOI2006]物流运输 最短路+DP
    牛客国庆集训派对Day6 E-Growth
    BZOJ2208 [Jsoi2010]连通数
    BZOJ2761 [JLOI2011]不重复数字
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/14084607.html
Copyright © 2011-2022 走看看