Как я могу точно измерить время отклика на запрос API POST

#java #automation #postman #rest-assured

Вопрос:

Я пишу код, который отправляет запросы POST и ожидает ОТВЕТА от сервера.

Мне нужно измерить точное время, необходимое для обработки информации на сервере (время отклика). Я заметил, что когда я отправляю запрос на сервер, используя rest assured, время там намного больше, чем время, которое я получаю через ПОЧТАЛЬОНА

Поэтому мой вопрос в том, как я могу наиболее точно измерить время и быть близким к результатам, которые я получаю через ПОЧТАЛЬОНА

Я несколько дней искал в Интернете и не нашел решения

Заранее спасибо всем помощникам!!!

Редактировать

Я использую надежную библиотеку, и у меня есть функция, которая выполняет для меня операцию POST

 public static Response postSubTotal (String var_baseURI, String FileLocation){
    RestAssured.baseURI =var_baseURI;
    RequestSpecification request = RestAssured.given();

    // Add a header stating the Request body is a JSON
    request.header("Content-Type", "application/json");

    // Add the Json to the body of the request
    request.body(BaseJSON.getString(FileLocation));

    // Post the request and check the response
    Response response = request.post("/Transaction/SubTotal");


    return response;
 

Мне нужно вынуть из ответа точное время .
итак, как мне использовать фильтр для этого
, что мне нужно отправить в эту функцию, чтобы отфильтровать время обработки от общего времени, чтобы у меня осталось только время отклика

 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

}
 

Комментарии:

1. Почтальон предоставляет некоторые показатели по сети и первому байту. Вы можете ознакомиться с документацией.

Ответ №1:

Если вам нужно измерить время, проведенное в JVM, вы можете использовать фильтр для регистрации этой информации:

Фильтр-это объект, который выполняет задачи фильтрации либо по запросу к ресурсу (сервлету или статическому содержимому), либо по ответу от ресурса, либо по обоим. Фильтры выполняют фильтрацию в методе doFilter. Каждый фильтр имеет доступ к объекту FilterConfig, из которого он может получить параметры инициализации, и ссылку на ServletContext, который он может использовать, например, для загрузки ресурсов, необходимых для задач фильтрации. Фильтры настраиваются в дескрипторе развертывания веб-приложения. Примерами, которые были определены для этого проекта, являются:

  • Фильтры аутентификации
  • Фильтры ведения журнала и аудита
  • Фильтры преобразования изображений
  • Фильтры сжатия данных
  • Фильтры шифрования
  • Маркирующие фильтры
  • Фильтры, запускающие события доступа к ресурсам
  • Фильтры XSL/T
  • Цепной фильтр Mime-типа

Этот вид фильтра будет измерять время между полученным запросом и построенным ответом. Он не учитывает время, проведенное в сети, которое не находится непосредственно под вашим контролем, потому что на него влияет подключение к Интернету.

Фильтр позволяет централизовать журнал времени, проведенного на сервере, для каждого входящего запроса.


Основным примером фильтра, регистрирующего время, может быть

 public class LogTimeFilter implements Filter {
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
        long before = System.currentTimeMillis();
        chain.doFilter(request, response);
        long after = System.currentTimeMillis();
        long elapsedTime = after - before;
        // Do what you need with the elapsed time
    }
}
 

Комментарии:

1. Действительно спасибо за ответ! Похоже, это то направление, в котором мне нужно двигаться, но я был бы рад, если бы вы помогли мне и объяснили мне . Как мне отфильтровать нужное мне время( получить время, как в «почтальоне»), потому что из всего, что я видел в Интернете, я не смог найти ничего, что могло бы это объяснить

2. @MichaelYav Я обновил ответ с помощью базового примера