VO的使用 | 您所在的位置:网站首页 › vo是啥字幕 › VO的使用 |
VO是view object的简称,中文意思是视图对象,也就是我们在controller中返回给前端的内容。一般开发时,我们要按照前端给的文档给前端返回相应的内容,比如现有api如下:
路由:GET /sell/buyer/product/list 参数:无 返回: { "code": 0, "msg": "成功", "data": [ { "name": "类目名1", "type": 1, "foods": [ { "id": "123456", "name": "商品名1", "price": 4.5, "description": "xxxxx", "icon": "http://xxx.com", } ] }, { "name": "类目名2", "type": 2, "foods": [ { "id": "123457", "name": "商品名2", "price": 10.9, "description": "xxxxx", "icon": "http://xxx.com", }, { "id": "123457", "name": "商品名3", "price": 10.9, "description": "xxxxx", "icon": "http://xxx.com", } ] } ] }一个中括号就表示里面的是list。那么可以知道,最外层是由code、msg和类目的list组成;第二层就是由类目名name、type和商品的list组成;商品的list就包含了商品的信息。那么要如何构造这样的返回对象呢?先从最外层开始写。根据最外层的三个字段,可以写出ResultVo类: /** * 返回给前端的最外层对象 * Create by zhu on 2018/10/7 */ @Data public class ResultVo { private Integer code;//错误码 private String msg;//提示信息 private T data;//返回的内容 }这里data定义为泛型,这样就可以通用。 现在将ResultVo对象返回给前端: public ResultVo test(){ ResultVo resultVo = new ResultVo(); resultVo.setCode(0); resultVo.setMsg("test"); resultVo.setData("这是内容"); return resultVo; }就会得到如下效果: 注意,前端需要的name其实是类目名,如果这个vo也直接定义变量name,到时候会搞不清楚到底是商品的name还是类目的name。解决方案是:这里应该是什么就写什么,然后通过@JsonProperty(“xxx”)来指定返回给前端时的名字。 写好后再去controller中: @GetMapping("/test") public ResultVo test() { ResultVo resultVo = new ResultVo(); ProductVo productVo = new ProductVo(); ProductInfoVo productInfoVo = new ProductInfoVo(); productInfoVo.setProductName("商品1"); productVo.setProductInfoVoList(Arrays.asList(productInfoVo)); productVo.setCategoryName("类目1"); resultVo.setData(Arrays.asList(productVo)); resultVo.setMsg("成功"); resultVo.setCode(0); return resultVo; }把最里层的赋好值设置给中间层,中间层赋好值设置给最外层,再把最外层返回给前端,效果如下:
那么上面的controller就可以改成: @GetMapping("/test") public ResultVo test() { ProductVo productVo = new ProductVo(); ProductInfoVo productInfoVo = new ProductInfoVo(); productInfoVo.setProductName("商品1"); productVo.setProductInfoVoList(Arrays.asList(productInfoVo)); productVo.setCategoryName("类目1"); return ResultVoUtil.success(Arrays.asList(productVo)); }链接:https://www.jianshu.com/p/32420dbdd7fb 来源:简书 |
CopyRight 2018-2019 实验室设备网 版权所有 |