6K Star 11.8K Fork 4K

GVPdotNET China / Furion

 / 详情

Oops.Bah 抛异常能否返回Data

已完成
创建于  
2022-08-25 15:29

💢 特别说明:如果 Issue 没有严格按照模板编写且未提供测试源码下载或 Git 测试仓库地址,则视为无效 Issue,将直接关闭。

Furion 版本号

哪个版本号?
4.2.10

.NET SDK 版本号

  • .NET5
  • .NET6
  • .NET7

Web 项目类型

  • WebApi
  • Mvc
  • Razor Pages
  • Blazor Server
  • MinApp

操作系统和版本

  • Windows(版本)
  • Linux(版本)
  • MacOS(版本)
  • 其他(版本)

代码环境

  • 开发环境(Development)
  • 生产环境(Production)
  • 测试环境(Tests/单元测试/集成测试 )

描述你的问题

能否在Oops.Bah中可以抛数据到Data中返回。
发生了什么?
throw Oops.Bah(msg).StatusCode(code);
1.在有些场景,需要返回错误数据给前端。
2.虽然排除规范化处理[NonUnify]可以自定义返回,但是接口中判断比较多的情况下,每个返回都需要自定义处理返回挺麻烦的。
3.在文档中 UnifyContext.Fill() 可以携带Object,但是在extras 中,希望可以在Data中。

期待结果

throw Oops.Bah(msg).StatusCode(code).SetData(data); 这样类似的接口
期待的结果是?
类似返回Data对象
{
"Success": false,
"Code": 400,
"Message": "验证错误",
"Data": [{
"id": "1"
}, {
"id": "2"
}, {
"id": "3"
}]
}

评论 (14)

ZHarbor 创建了任务
ZHarbor 修改了描述
展开全部操作日志

这个文档我看过了,但是 throw Oops.Bah(msg) 抛异常的时候,是指定不到Data的。

....这个结果都是你自定义的,怎么指定不到???会触发 OnValidationFaild

输入图片说明

这个参数有你想要的一切信息。

百小僧 任务状态待办的 修改为已完成

你可以试试,如果还不能做到,写一个最简单的demo发上来,issue已经说明。

我明白你的意思, 我待会有时间写个demo发上来.

 public string Test()
        {
            List<User> list = new List<User>();

            User user1 = new User
            {
                Name = "张三",
                Email = "123"
            };

            User user2 = new User
            {
                Name = "李四",
                Email = "456"
            };

            list.Add(user1);
            list.Add(user2);

            // 如果是这样抛异常,OnValidationFaild 方法中的 OnValidationFaild.ErrorCode 会是 这个list,不是我想要的。
            throw Oops.Bah(list);

            // 怎么把 List 抛到 OnValidationFaild 方法中的 OnValidationFaild 类的哪个属性

            // 这样子抛异常 会获取不到 list数据
            throw Oops.Bah("出错啦", list);

            // 这个方法会处理异常
            //public IActionResult OnValidateFailed(ActionExecutingContext context, ValidationMetadata metadata)
            //{
            //    // 这个方法可以指定Data返回,metadata取不到我想要的参传Data 
            //    return new JsonResult(YourRESTfulResult(StatusCodes.Status400BadRequest, errors: metadata.ValidationResult, data: ""));
            //}

        }

        public class User
        {
            public string Name { get; set; }
            public string Email { get; set; }
        }

输入图片说明
输入图片说明

你是全网第一个在 Oops.OhOops.Bah 中传递数据(集合的!)

不过你这个设计可以采纳:

throw Oops.Bah(msg).StatusCode(code).SetData(data); 

我会提供一个 WithData 的链式给你,建议不错,将在下个版本(今天发布)

谢谢,因为有些验证场景是需要返回集合给前端显示的,又不想贴[NonUnify], 所以有这个需求。

搞定,支持 OhBahfbc8e01

输入图片说明

输入图片说明


今天发布。

好的 :ok_hand:

v4.3.0 版本发布。

小僧响应速度相当快啊!赞!

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(3)
974299 monksoul 1578937227 757716 null 002 0644 1688273862
C#
1
https://gitee.com/dotnetchina/Furion.git
git@gitee.com:dotnetchina/Furion.git
dotnetchina
Furion
Furion

搜索帮助