当前位置: 首页 > news >正文

设计素材网站线上北京seo怎么优化

设计素材网站线上,北京seo怎么优化,腾讯企点怎么用,做网站多少钱_西宁君博相约背景:项目中有些接口的入参需要用户id信息,最简单的做法在每个Controller方法调用的时候获取登录信息然后给入参设置用户id,但是这样就会有很多重复性的工作。另一个可行的也更好的方案可以使用HandlerMethodArgumentResolver来实现。 部分示…

背景:项目中有些接口的入参需要用户id信息,最简单的做法在每个Controller方法调用的时候获取登录信息然后给入参设置用户id,但是这样就会有很多重复性的工作。另一个可行的也更好的方案可以使用HandlerMethodArgumentResolver来实现。

部分示例代码如下:

1、需要用户id的入参基类
@Data
@ToString
public class WarehouseBaseReq implements Serializable {private String userId;
}
2、新增自定义的解析器处理接口入参设置用户id
@Slf4j
@Component
public class LycMethodArgumentResolver implements HandlerMethodArgumentResolver, InitializingBean {@Autowiredprivate RequestMappingHandlerAdapter adapter;private HandlerMethodArgumentResolver delegate;@Overridepublic void afterPropertiesSet() throws Exception {List<HandlerMethodArgumentResolver> argumentResolvers = adapter.getArgumentResolvers();List<HandlerMethodArgumentResolver> resolverList = new ArrayList<>(argumentResolvers);// 用自定义的resolver代理decorateResolvers(resolverList);adapter.setArgumentResolvers(resolverList);}@Overridepublic boolean supportsParameter(MethodParameter methodParameter) {return delegate.supportsParameter(methodParameter);}@Overridepublic Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {Object obj = delegate.resolveArgument(methodParameter,mavContainer,webRequest,binderFactory);// 判断只有当入参是指定类型才设置if (obj instanceof WarehouseBaseReq) {WarehouseBaseReq requestObj = (WarehouseBaseReq)obj;// 从ThreadLocal中获取登录用户信息UserDto userDto = UserThreadLocal.getUser();if (null != userDto) {// 给接口入参设置用户idrequestObj.setUserId(userDto.getId());}}return obj;}private void decorateResolvers(List<HandlerMethodArgumentResolver> resolverList){for (int i=0; i<resolverList.size();i++){HandlerMethodArgumentResolver resolver = resolverList.get(i);if (resolver instanceof RequestResponseBodyMethodProcessor){this.delegate = resolver;resolverList.set(i,this);break;}}}
}
3、模拟查询仓库的入参
@Data
@ToString(callSuper = true)
public class WarehouseDto extends WarehouseBaseReq {private Long warehouseId;private String warehouseName;private String warehouseCode;
}
4、模拟查询仓库的controller方法
@RestController
@RequestMapping("/web/warehouse")
public class WarehouseController {@Autowiredprivate WarehouseBizService warehouseBizService;@RequestMapping("/testById")public BizRsp<WarehouseDto> testQueryById(@RequestBody WarehouseDto warehouseDto) {log.info("testQueryById方法执行,warehouseDto:{}",warehouseDto);LearingAssert.notNull(warehouseDto.getUserId(),"用户id不能为空");return BizRspUtil.success(warehouseBizService.queryById(warehouseDto));}
}
5、postman中模拟调用接口,入参只需要传递其他参数,结构如下:

{
“warehouseId”:1
}

自此调用方无需传递用户id,controller的方法也无需写重复代码设置用户id即可实现统一添加接口入参参数的效果。
在spring中还有其他一些处理器,可在一些场景下帮助我们更好的实现一些功能。

参考博客:
[1] spring中的各种处理器
[2]方法参数解析器

http://www.yidumall.com/news/31833.html

相关文章:

  • 重庆营销网站建设公司怎么推广自己的网站
  • s9视频直播外贸seo网站
  • 安徽省建设工程质量协会网站成都网络运营推广
  • 网站开发难吗2008广告公司品牌营销推广
  • 做设计那些网站可以卖设计百度快照推广有效果吗
  • 建筑工程信息平台湖北seo诊断
  • 专门做岛屿的网站百度开户怎么开
  • 大连制作网站报价seo合作代理
  • 网站注册建设站外引流推广渠道
  • 网站设计类论文怎么做百度一下官方网页
  • 网站设计报价方案怎样提高百度推广排名
  • 西安建站套餐网上竞价平台
  • 阿里巴巴官方网站网页分析报告案例
  • 教育门户网站建站互联网营销成功案例
  • 做平面那个网站素材好网站查询地址
  • 自己电脑如何做网站服务器怎么制作网站教程步骤
  • 做日语网站 adsense百度top风云榜
  • 企业网站策划大纲模板正规网站优化哪个公司好
  • 编程和做网站有关系吗seo优化网站源码
  • 修改wordpress函数快速网站seo效果
  • 上海网站建设哪家技术好游戏推广合作平台
  • 做网站网站建设教程东莞网站推广及优化
  • 软路由系统如何做网站河南省疫情最新情况
  • 公司网站如何做seo76人vs猛龙
  • 织梦iis7搭建网站seo网站优化平台
  • 如何购买域名建网站怎样把产品放到网上销售
  • 门户网站开发seo效果分析
  • 建设部网站公告注册成功网站推广平台有哪些
  • 天津 响应式网站设计seo排名外包
  • 南京制作网站公司杭州排名优化公司