今天开发一个前端遍历展示的接口,被前端怼了
看图需求很简单
- 多行展示
- 每行多个,可显示更多,每行可左右滑动
为了图省事简单组装一下直接返回回去了,方便是真的方便,前端生气也是真的生气,可以简单对这个横向、纵向接口压缩一下
- 横向空间上,可以取分页,前端自己传,无论是懒加载还是更多,根据pageSize、返回的数据量决定,可以提供给前端自定义的空间
- 纵向空间上,入参加入 type,前端自己写死对应枚举
这样无论扩展还是数据冗余都有比较大的改善
/*** 兑换页信息*/@RequestMapping("tab")public ResultVO<ShopTapBrieVo> tab(@RequestHeader(HttpHeadConstant.lgType) int lgType,@RequestParam int tabType,@RequestParam int pageIndex,@RequestParam int pageSize) {return ResultVO.success(shopService.tab(tabType, pageIndex, pageSize, lgType));}// servicepublic ShopTapBrieVo tab(int pageIndex, int pageSize, int type, int lgType) {for (ShopTab shopTab : ItemManager.getShopTabs()) {if (shopTab.getId() != type) {continue;}ShopTapBrieVo vo = new ShopTapBrieVo();LanguageInfo language = LanguageManger.getLanguage(Module.SHOP, ItemManager.TYPE2_SHOP_TAP_NAME, 0, shopTab.getId(), lgType);if (language != null) {vo.setTapTitle(language.getContext1());} else {vo.setTapTitle(shopTab.getName());}List<ShopDefineBrieVo> collect = ItemManager.getShopTabDefines(shopTab.getId()).stream().map(e -> new ShopDefineBrieVo(e, lgType)).collect(Collectors.toList());// 内存分页int total = collect.size();int fromIndex = Math.min(pageIndex * pageSize, total);int toIndex = Math.min((pageIndex + 1) * pageSize, total);vo.setVos(collect.subList(fromIndex, toIndex));return vo;}return null;}
由于规则数据是预加载到内存中,所以直接使用内存分页,由于 subList 采用的是视图,并不会创建多余的对象,这里顺便回顾一下其他知识 java集合中sublist()的坑
这是一段防爬代码块,我不介意文章被爬取,但请注明出处
console.log("作者主页:https://www.cnblogs.com/Go-Solo");
console.log("原文地址:https://www.cnblogs.com/Go-Solo/p/18332136");