Cómo FeignClient cuota de Cabecera y el proceso escalonado en boxes

Pregunta: En el caso de la llamada fingir a menudo necesitamos utilizar un encabezado cliente celebrada por ejemplo auth-modo, tenemos que transmitir estos cabecera

Ideas: el uso de interceptores, a petición del cliente para fingir la intercepción, y para transmitir la cabecera requerida

código:

1. Definición del interceptor

@Configuration
 pública  de clase FeignInterceptor implementos RequestInterceptor { 
    @ Override 
    pública  nula aplicar (RequestTemplate requestTemplate) { 
        Mapa <String, String> cabeceras = getHeaders (getHttpServletRequest ());
        para (String headerName: headers.keySet ()) { 
            requestTemplate.header (. headerName, getHeaders (getHttpServletRequest ()) obtener (headerName)); 
        } 
    } 

    Privada HttpServletRequest getHttpServletRequest () {
         try {
             retorno((ServletRequestAttributes) RequestContextHolder.getRequestAttributes ()) getRequest ().; 
        } Catch (Exception e) { 
            e.printStackTrace (); 
            volver  nula ; 
        } 
    } 

    Privados Map <String, String> getHeaders (HttpServletRequest solicitud) { 
        Mapa <String, String> MAP = nueva LinkedHashMap <> (); 
        Enumeración <String> enumeración = request.getHeaderNames ();
        mientras que (enumeration.hasMoreElements ()) { 
            String key = enumeration.nextElement ();
            Si(NeedThisHeader (Key)) { 
               String value = request.getHeader (Key); 
               map.put (clave, valor); 
            } 
        } 
        regresar Mapa; 
    } 

  privada  de Boole needThisHeader (String headerName) {
      // TODO: aquí se escribe la lógica, el cual necesidad de cabecera que pase, no pase en toda la cabecera 
      de retorno  a la verdadera ; 
  } 
}

2. Resorte inyecta en el interceptor

@Configuration
 pública  clase FeignSupportConfig {
     / ** 
     * fingir请求拦截器
     * 
     * @return 
     * / 
    @Bean 
    pública RequestInterceptor requestInterceptor () {
         devolver  nueva FeignInterceptor (); 
    } 

}

 

Pit:

No debe poner toda la cabecera se pasan hacia abajo, esto es probable que resulte en una llamada a tiempo fingir, el tipo de solicitud de confusión, que debe ser obligados a llevar lo cabecera cabecera

Supongo que te gusta

Origin www.cnblogs.com/logan-w/p/12498448.html
Recomendado
Clasificación