今天给大家介绍一个我们Java前后端开发项目时常常使用的一个通用结果类
实现代码如下:
/**
* 通用返回结果,服务端响应的数据最终都会封装成此对象
* @param
*/
@Data
public class R {
private Integer code; //编码:1成功,0和其它数字为失败
private String msg; //错误信息
private T data; //数据
private Map map = new HashMap(); //动态数据
public static R success(T object) {
R r = new R();
r.data = object;
r.code = 1;
return r;
}
public static R error(String msg) {
R r = new R();
r.msg = msg;
r.code = 0;
return r;
}
public R add(String key, Object value) {
this.map.put(key, value);
return this;
}
}
1.解析此类
code: 实际上就是和前端约定好的状态码。
常常200表示成功 400表示执行失败。这里使用1成功,0和其它数字为失败。
例如在success() 中设置code = 1,error()则code = 0
msg:错误信息
在使用error函数中常常设置错误信息返回给前端
data:访问成功时,返回的数据信息。使用了泛型可以根据不同情况,返回不同类型的数据。
在访问成功又不需要返回数据的情况可以将T设置为String类型,然后用作返回访问成功提示信息。
map:动态向结果集中填充一些额外的数据
例如:R.success().add(key,value)函数向其中填充额外数据。
static
R.success(返回的数据对象) 即可返回携带返回数据 设置好状态码的R对象。通过springMVC中的@ResponseBody注解将返回的R对象转化为json类型数据
同理:
static
R.error(返回的错误信息) 即可返回携带提示信息 设置好状态码的R对象。
add():用于向结果集中添加额外的动态信息。
2.使用实例:下面是我写登录退出时的使用情景:
@Slf4j
@RestController
@RequestMapping("/employee")
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
@PostMapping("/login")
public R login(HttpServletRequest request, @RequestBody Employee employee){
// 1.将页面提交的密码password进行md5加密处理
String password = employee.getPassword();
password = DigestUtils.md5DigestAsHex(password.getBytes());
// 2.根据页面提交的username查找数据库
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Employee::getUsername,employee.getUsername());
Employee emp = employeeService.getOne(queryWrapper);
// 3.如果没有查询到则返回登录失败结果
if (emp == null){
return R.error("该用户不存在!");
}
// 4.密码对比 不一致则登陆失败
if (!emp.getPassword().equals(password)){
return R.error("密码输入有误!");
}
// 5.查看员工状态 若已禁用 则返回用户已被禁用
if (emp.getStatus() == 0){
return R.error("您的账户已被冻结!");
}
// 6.登陆成功,将员工id存入Session并返回登陆成功结果
request.getSession().setAttribute("employee",emp.getId());
return R.success(emp);
}
@PostMapping("/logout")
public R logout(HttpServletRequest request){
request.getSession().removeAttribute("employee");
return R.success("退出成功!");
}
}
其中:
// 返回访问错误信息
return R.error("密码输入有误!");
// 返回访问成功 并将登陆成功的成员信息返回到结果集中
return R.success(emp);
//添加额外动态信息的结果集
return R.success(emp).add("info","登陆成功!");
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)