目录
彩蛋: 里面传递了token 使用过滤器 可以实现自动传递token 无需传递, 下一篇介绍
把GET改成POST,把方法上参数实体类加上@RequstBodY,这是最快速得方案
2. 方式二: 依然使用get请求 需要使用feign新加的请求参数
2.2 写一个配置类 注入feignBuilder 方法(重点)
重启服务 尝试吧 不要用@RequestParam 了哟~~~~
微服务: feign 的请求拦截器 执行token拦截, 接口无需传递token
远程调用方 : (消费者) 服务调用者
- /**
- * @Author pzy
- * @Description: TODO
- * @Version 0.1.0
- */
- @FeignClient(name = "*-product", fallback = ProgramOffServiceFallback.class)
- public interface ProgramOffService {
-
- //商品上架列表
- @RequestMapping(value =("/product/shopOnlineList"),method = RequestMethod.GET)
- ResultResponse shopOnlineList(@RequestHeader("token") String token,@SpringQueryMap ShopOnlineListReqDTO param);
-
-
- }
- package com.aisce.axmall.activity.config;
-
- import feign.Feign;
- import feign.querymap.BeanQueryMapEncoder;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
-
- /**
- * feign配置 QueryMap
- * 为了 使用 get请求 -> 实体类 方式
- * //@SpringQueryMap 配合这个使用
- * @Author pzy
- * @Description: TODO
- * @Version 0.1.0
- */
- @Configuration
- public class FeignClientCustomizerConfig {
- /**
- * 替换解析 queryMap 的类,实现父类中变量的映射
- * @return
- */
- @Bean
- public Feign.Builder feignBuilder() {
- return Feign.builder()
- .queryMapEncoder(new BeanQueryMapEncoder());
- }
- }
查询映射将使用Java bean可访问getter属性作为查询参数生成的名字。
eg: "/uri?name={name}&number={number}"不保证所包含的查询参数的顺序,通常情况下,如果任何值为空,则为空
就直接不传递了
private final Map, ObjectParamMetadata> classToMetadata = new HashMap , ObjectParamMetadata>();