SpringBoot拦截器 打印OpenFeign请求内容

import com.alibaba.nacos.common.utils.HttpMethod;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;

@Slf4j
@Component
public class CustomerFeignRequestInterceptor implements RequestInterceptor {

    @Override
    public void apply(RequestTemplate template) {
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();

        if (attributes != null) {
            HttpServletRequest request = attributes.getRequest();
            template.header("sessionId", request.getHeader("sessionId"));
        }
        switch (template.method()) {
            case HttpMethod.GET:
                log.info("{}OpenFeign GET请求,请求路径:【{}", System.lineSeparator(), template.url());
                break;
            case HttpMethod.POST:
                log.info("{}OpenFeign POST请求,请求路径:【{}】,请求参数:【{}】",
                        System.lineSeparator(),
                        template.url(),
                        new String(template.requestBody().asBytes(), template.requestCharset()));
                break;
            default:
        }
    }
}

 

posted @ 2021-02-19 16:29  陈彦斌  阅读(1446)  评论(0)    收藏  举报