Java - 后端传递多参数数据 - 活用 AjaxResult 与 Map<String, Object> - AjaxResult 与 R 模块的理解
演示代码:
@RestController
@RequestMapping("/test")
public class TestController extends BaseController {
@PostMapping("/info")
public AjaxResult testinfo(@RequestBody TestEntity testone) {
Map<String, Object> testmap = new HashMap<>();;
testmap.put("test1","测试1"); // 新增键与其值
testmap.put("test2","测试2"); // 新增键与其值
ordermap.remove("result"); // 删除键与其值
// 成功 - 获取key 为 test1 的数据回传前端
return AjaxResult.success("success", testmap.get("test1").toString());
// 成功 - 数据所有的 testmap回传前端
// return AjaxResult.success("success", testmap );
// 失败 - 数据回传前端
//return AjaxResult.error(test.get("msg").toString());
}
}
一、优化数据传输模块的用法与记录
1、 在什么时候可以使用 AjaxResult 或 R 模块
- 序列化方式不同;某些情况下,使用 ajax 是最好的,某些情况下使用 R 模块却才是最好的,例如服务间用
R
,返回给前端用AjaxResult
个人理解:
先来了解两者的用法
R 模块的用法:
@PostMapping("/test/info")
public R<TestEntity> testinfo(@RequestBody TestEntity test) {
if (...) {
...
return R.fail();
}
return R.ok();
}
AjaxResult 用法:
@PostMapping("/test/info")
public AjaxResult testinfo(@RequestBody TestEntity test) {
if (...) {
...
return AjaxResult.success();
}
return AjaxResult.error();
}
可以看到 R 模块限定了一个实体类来序列化,只能用于该实体类的数据,对于前端的复制数据传输有很大的限制,而且后端的运行很需要高效有用的数据运行,而不是使用冗余的数据在内存中占用资源,最后一点是,AjaxResult 继承了 HashMap<String, Object>,其对象实例化后,可以插入复杂数据,例如 Json格式数据,对于前端的数据获取有了一个极大的灵活性选择,所以前端用 AjaxResult
后端用 R
模块,是最好的选择。
AjaxResult 继承重写代码如下:
public class AjaxResult extends HashMap<String, Object>
{
...
...
...
@Override
public AjaxResult put(String key, Object value)
{
super.put(key, value);
return this;
}
}
参考链接
1. 为什么接口返回类型有的用R 有的用AjaxResult?