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 模块

  1. 序列化方式不同;某些情况下,使用 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?

2、关于序列化的理解

参考链接

1. 序列化的几种方式及区别

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值