Как переиспользовать Rest запрос в одном классе Java

Рейтинг: 0Ответов: 1Опубликовано: 31.01.2023

Всем привет. В ходе реализации столкнулся с такой проблемой, что необходимо создать сущность, которая будет использоваться около 5 раз в одном классе. Код следующий:

        val token = Service.getAuthToken();
        val object = new RequestWrapper("***");
        
        val payload = new RequestPayload(dto.getSomething());
        object.setPayload(payload);

        val httpEntity = getRequestEntity(object, token);
        val httpMethod = HttpMethod.POST;
        val response = restTemplate.exchange(adapterExecUrl,
                httpMethod, httpEntity, ResponseWrapper.class);

        if (response.getBody() == null || response.getBody().getPayload() == null)
            throw new RequestErrorException("An error occured during request");

        if (response.getBody().getPayload().getStatus() != 0)
            throw new RequestErrorException("Request " + object.getPayload().getMethod() + " returned != 0");

        return response.getBody().getPayload().getTargetSum();

Повторятся будет следующий отрывок:

        val httpEntity = getRequestEntity(object, token);
        val httpMethod = HttpMethod.POST;
        val response = restTemplate.exchange(adapterExecUrl,
                httpMethod, httpEntity, ResponseWrapper.class);

        if (response.getBody() == null || response.getBody().getPayload() == null)
            throw new RequestErrorException("An error occured during request");

        if (response.getBody().getPayload().getStatus() != 0)
            throw new RequestErrorException("Request " + object.getPayload().getMethod() + " returned != 0");

Ответы

▲ 0Принят

Вы можете выделить повторяющийся код в отдельную функцию и вызывать эту функцию несколько раз в своем классе. private ResponseWrapper executeRequest(RequestWrapper object, String token,

String adapterExecUrl) {
        val httpEntity = getRequestEntity(object, token);
        val httpMethod = HttpMethod.POST;
        val response = restTemplate.exchange(adapterExecUrl,
                httpMethod, httpEntity, ResponseWrapper.class);

        if (response.getBody() == null || response.getBody().getPayload() == null)
            throw new RequestErrorException("An error occured during request");

        if (response.getBody().getPayload().getStatus() != 0)
            throw new RequestErrorException("Request " + object.getPayload().getMethod() + " returned != 0");

        return response.getBody();
}

Затем в вашем классе:

val token = Service.getAuthToken();
val object = new RequestWrapper("***");
val payload = new RequestPayload(dto.getSomething());
object.setPayload(payload);

val response = executeRequest(object, token, adapterExecUrl);

return response.getPayload().getTargetSum();