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 下载与导入
下一篇:
相关文章
-
无相关信息