共同点:
都是Java返回数据结果统一封装体
区别:
Ajax更适用于后端和前端间的数据传递。
Result适用于后端间的数据传递
原因:
R模块用法:
less
@PostMapping("/test/info")
public R<TestEntity> testinfo(@RequestBody TestEntity test) {
if (...) {
...
return R.fail();
}
return R.ok();
}
AjaxResult用法:
java
@PostMapping("/test/info")
public AjaxResult testinfo(@RequestBody TestEntity test) {
if (...) {
...
return AjaxResult.success();
}
return AjaxResult.error();
}
java
public class AjaxResult extends HashMap<String, Object>
{
...
...
...
@Override
public AjaxResult put(String key, Object value)
{
super.put(key, value);
return this;
}
}
最主要的原因还是,R模块,限定了一个实体类来序列化,只能用于该实体类的数据,对于前端的复制数据传输有很大的限制。
而AjaxResult,继承了HashMap<String, Object>,其对象实例化后,可以插入复杂数据,例如 Json格式数据,对于前端的数据获取有了一个极大的灵活性选择,所以前端用 AjaxResult
后端用 R
模块,是最好的选择。
数据结构:
AjaxResult
AJAX 是一种在无需重新加载整个页面的情况下,能够更新部分网页的技术。因此,AjaxResult
往往被设计为能够方便地通过 HTTP 响应传递给前端 JavaScript 代码。
返回结果封装体
- code:状态码,表示操作是否成功,例如 200 表示成功,500 表示服务器错误等。
- msg:返回消息(内容),关于操作结果的描述性文本,例如"操作成功"或"参数错误"等。
- data:数据对象,实际的操作结果数据,可能是对象、数组或其他数据结构。
Result
Result功能是封装Action层到View层的跳转逻辑。
更多的就是传递一个信息,成功与否这种
java
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
Integer status;
Object data;
String msg;
public static Result success(){
return new Result(Constants.CODE_200,null,"");
}
public static Result success(Object data){
return new Result(Constants.CODE_200,data,"");
}
public static Result error(Integer code,String msg){
return new Result(code,null,msg);
}
public static Result error(){
return new Result(Constants.CODE_500,null,"系统错误");
}
}