2012系统 做网站,外贸营销活动方案,举报的网站是国外的域名和空间,手机怎么建立自己的网站需求#xff1a;
trade服务需要在下单后清空购物车
分析#xff1a;
显然#xff0c;清空购物车需要调用cart服务#xff0c;也就是这个功能的实现涉及到了微服务之间的转发。
其次#xff0c;清空购车还需要userId#xff0c;所以需要使用RequestInterceptor来实现夹…需求
trade服务需要在下单后清空购物车
分析
显然清空购物车需要调用cart服务也就是这个功能的实现涉及到了微服务之间的转发。
其次清空购车还需要userId所以需要使用RequestInterceptor来实现夹带信息。
完整流程
1.前端收到点击事件“下单”根据uri调用后端接口---
2.springcloud网关拿到uri进行解析从header中提取出tokenSpringcloud的Global拦截器进行鉴权并且将其中根据token解析出的info存放在header中进行后续的拦截过程。
网关查找到对应的服务根据nacos提供的表单采用负载均衡选取对应端口携带header中的info进行转发---
3.trade服务在收到网关请求前经过公有api模块的springmvc拦截器该拦截器将请求中的info读取并存放在threadLocal中该拦截器作用仅用于将info存放仅threadLocal所以是对所有页面放行的---
4.trade模块执行对应功能执行中调用cart模块---
6.调用cart模块使用openfeign进行请求发送由于cart服务需要userId所以需要经过openfeign拦截器进行增强。因为对cart模块发起的openfeign请求是由trade模块完成的所以使用的线程仍然是执行trade模块功能的线程该线程的threadLocal中存储着info拦截器将info信息从threadLocal中取出并存放在请求连接的请求头中。---
7.openfeign请求cart服务openfeign请求仍然是一个http请求既然是http请求定然会被公有拦截器拦截。所以拦截器取出请求头中的info并将其存在对应新线程的threadLocal中执行清空购物车功能。---
8.结束
总结:
整个过程实际上是info信息的传递
最初后端初次鉴权——在springcloud的GlobalFilter中进行鉴权后得到info开始传递
公有拦截器从header读取info并存入trade线程的threadLocal
openfeign将threadLocal的info取出装进新http请求的header
共有拦截器从header读取info并存入cart线程的threadLocal