素材巴巴 > 程序开发 >

ABP框架学习笔记(便签一)——abp中对json的封装

程序开发 2023-09-08 23:35:02

Abp封装了AbpJsonResult
继承于JsonResult,其中主要添加了两个属性:CamelCase 驼峰式命名 和Indented 是否缩进并在AbpController 中重载了Controller的Json()方法,强制所有返回的Json格式数据为AbpJsonResult类型,并提供了AbpJson()的虚方法。

其中result为代码中指定返回的数据。其他几个键值对是ABP封装的,包含了是否认证、是否成功、错误信息,以及目标Url。这几个参数是不是很sweet。也可以通过调用return AbpJson() 来指定参数进行json格式化输出。
所以开始如果我们直接获取json字符串的时候,会发现与我们原来的json不一样.如果在前端框架直接调用json()方法返回的时候,返回的不是json而是一个对象.当不需要abp对json进行封装包裹怎么办?只需要在方法上标记 [DontWrapResult] 特性标签即可。在AbpResultFilter 和AbpExceptionFilter 过滤器中会根据WrapResultAttribute、DontWrapResultAttribute 特性进行相应的过滤。

就拿一个简单的登录页来说,我们看看封装前和封装之后的代码

{success: true, Msg: "登录成功"}
 

封装之后,

{result: {success: true, msg: "登录成功"},"targetUrl": null,"success": true,"error": null,"unAuthorizedRequest": false,"__abp": true
 }
 

标记示例
在这里插入图片描述

/// 
 /// 查询所有用户信息
 /// 
 /// 
 [DontWrapResult]
 public async Task GetMatUserAll()
 {//获取实体//var peopleEntityList = await _matUserRepository.GetAllList(person => person.Name.Contains(input.SearchedName));var peopleEntityList = await _matUserRepository.GetAllListAsync();//转换为DTO对象var peopleDtoList = peopleEntityList.Select(person => new MatUserDto{Id = person.Id,UserName = person.UserName,MailAddress = person.MailAddress}).ToList();return new GetMatUserOutput{User = ObjectMapper.Map>(peopleDtoList)};
 }
 

标签:

上一篇: Bootstrap v3 下载与导入 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。