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