微服务: Feign调用GET请求找不到请求体实体类

目录

彩蛋:  里面传递了token 使用过滤器 可以实现自动传递token 无需传递, 下一篇介绍

1. 方法一: 尽可能使用post请求

把GET改成POST,把方法上参数实体类加上@RequstBodY,这是最快速得方案

2. 方式二:  依然使用get请求 需要使用feign新加的请求参数

->  @SpringQueryMap 注解

2.1 添加的位置: 

2.2 写一个配置类 注入feignBuilder 方法(重点)

2.3 源码剖析BeanQueryMapEncoder

-> 这里面翻译过来是 

-> 而传递方式也是很直接

重启服务 尝试吧 不要用@RequestParam 了哟~~~~


彩蛋:  里面传递了token 使用过滤器 可以实现自动传递token 无需传递, 下一篇介绍

微服务: feign 的请求拦截器 执行token拦截, 接口无需传递token

1. 方法一: 尽可能使用post请求

把GET改成POST,把方法上参数实体类加上@RequstBodY,这是最快速得方案

2. 方式二:  依然使用get请求 需要使用feign新加的请求参数

->  @SpringQueryMap 注解

2.1 添加的位置: 

远程调用方 : (消费者) 服务调用者

/**
 * @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);


}

2.2 写一个配置类 注入feignBuilder 方法(重点)

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());
    }
}

2.3 源码剖析BeanQueryMapEncoder

-> 这里面翻译过来是 

查询映射将使用Java bean可访问getter属性作为查询参数生成的名字。 

eg: "/uri?name={name}&number={number}"

不保证所包含的查询参数的顺序,通常情况下,如果任何值为空,则为空  

就直接不传递了 

-> 而传递方式也是很直接

private final Map, ObjectParamMetadata> classToMetadata =
    new HashMap, ObjectParamMetadata>(); 

重启服务 尝试吧 不要用@RequestParam 了哟~~~~

你可能感兴趣的:(#,SpringCloud微服务,#,异常总结分类,java,SpringCloud,feign,Get,实体类)