Получение pathVariable в Feign - PullRequest
1 голос
/ 01 июля 2019

Я пытаюсь зарегистрировать детали запроса стороннего API и смог записать URL, тело запроса и ответа.

Вот мой пример метода симуляции клиента:

@GetMapping(value = "/{name}")
Customer getDetails(@PathVariable(name = "name") List<String> name);

Вот метод, в котором я перехватил ответ в симуляции и смог записать URL, запрос и ответ.

public class FeignResponseDelegate extends Default {

@Override 
public Response execute(Request request, Request.Options options) throws IOException {
    Response response = super.execute(request, options);


    Request.Body requestBody = request.requestBody();
    InputStream responseBodyInputStream = response.body().asInputStream();
    byte[] bytes = IOUtils.toByteArray(responseBodyInputStream);


    logger.debug("Request URL {}", request.url());
    logger.debug("Request Request body {}", requestBody.length() > 0 ? requestBody.asString() : null);
    logger.debug("Response Body {}", IOUtils.toString(responseBodyInputStream));

    // logger.debug("Path Variables: {}".....
    // how to log the path variables?


    return response.toBuilder()
            .body(bytes)
            .build();
 }
}

1 Ответ

0 голосов
/ 18 июля 2019

Регистрация экземпляра feign.Logger поможет вам.

@Bean
public Logger logger() {
    /* here are the two built in loggers */
    return new JavaLogger(); // for java.util.logging

    /* may require feign-slf4j */
    return new Slf4jLogger(); // if you want to use slf4j
}

Logger зарегистрирует запрос и ответ для вас, включая параметры разрешенного пути и заголовки.Взгляните на документацию SLF4J на Feign для получения дополнительных советов

...