SpringCloud-feign拦截器
实现requestInterceptor接口
@Configuration
public class FeignConfiguration implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
String authorization = request.getHeader("Authorization");
template.header("Authorization", authorization);
}
}
解决了在feign调用时,请求参数的丢失。
在@FeignClient中添加configuration = FeignConfiguration.class属性
@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class, configuration = FeignConfiguration.class)
public interface RemoteUserService {
/**
* 通过用户名查询用户信息
* @param userName 用户名
* @return 结果
*/
@GetMapping(value = "/user/info/{userName}")
R<LoginUser> getUserInfo(@PathVariable("userName") String userName);
@GetMapping(value = "/user/{userId}")
R<?> getInfo(@PathVariable(value = "userId", required = false) Long userId);
}