import com.alibaba.fastjson.JSONObject;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import feign.Target;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.net.URLEncoder;
@Component
public class ChangeServiceNameRequestIntecepor implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
//@FeignClient("user")
Target<?> t = requestTemplate.feignTarget();
System.out.println(t.name());
//>> user
System.out.println(t.url());
//>> http://user
//这里给出构造完整的请求了,这里可以将服务名称改掉了,或者直接换成真实ip
//我想要将user 改成 usernew 服务
requestTemplate.target("http://usernew");
}
}
Target.name 得到此FeignClient指定的名称 比如 user
可以通过调用requestTemplate.target(“http://usernew”)去修改服务名称。最终调用的服务是
usernew。
该文介绍了一个Java实现的RequestInterceptor,通过Feign的Target接口获取服务名称,例如user,然后将其修改为usernew,从而实现调用服务时的服务名称替换,达到指向新的服务地址的目的。
581

被折叠的 条评论
为什么被折叠?



