本文共 2079 字,大约阅读时间需要 6 分钟。
分享一个返回前端数据的包装类
最近在项目中遇到一个需要将服务端数据包装返回前端的问题,为了方便处理和维护,我设计并实现了一个RestResponse类。这个类不仅能够方便地封装不同类型的数据,还支持通过工厂方法快速构造响应结果,减少了前后端的耦合度。
RestResponse是一个泛型类,定义如下:
public class RestResponseimplements Serializable { private static final long serialVersionUID = -4577255781088498763L; private static final String OK = "0"; private static final String FAIL = "1"; private static final String UNAUTHORIZED = "2"; private T data; private String code = OK; private String msg; // 工厂方法 public static RestResponse.ok()
类中的核心特性包括:
工厂方法的设计非常简洁,用户可以通过调用相应的工厂方法快速构造响应对象:
public static RestResponse.ok() { return new RestResponse().setCode(OK);}public static RestResponse.fail() { return new RestResponse().setCode(FAIL);}public static RestResponse.unauthorized() { return new RestResponse().setCode(UNAUTHORIZED);} 这些方法的设计目的是为了让开发者在不需要手动构造对象的情况下,快速获取一个预设状态的响应对象。
在实际项目中,可以通过以下方式使用RestResponse类:
@GetMapping("/query")public String queryPushTask(Integer id) { log.info("查询推送任务"); RestResponse rest = pushTaskService.queryPushTask(id); return JSON.toJSONString(rest);} 具体的实现细节如下:
@Overridepublic RestResponse queryPushTask(Integer id) { try { PushTask task = pushTaskMapper.selectByPrimaryKey(id); return RestResponse.ok(task).setMsg("查询推送任务成功"); } catch (Exception e) { e.printStackTrace(); return RestResponse.fail().setMsg("查询推送任务失败"); }} 通过这些代码可以看出,RestResponse类的使用非常简单,仅需调用相应的工厂方法并传入数据和必要的上下文信息即可。
通过对RestResponse类的设计和实现,可以看到一个优秀的包装类应该具备哪些特点:
这种设计模式在API开发中非常常见,能够帮助开发者快速构造响应结果,减少前后端的耦合,同时提高代码的可读性和维护性。
转载地址:http://okkp.baihongyu.com/