Как переиспользовать Rest запрос в одном классе Java
Всем привет. В ходе реализации столкнулся с такой проблемой, что необходимо создать сущность, которая будет использоваться около 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");
Ответы (1 шт):
Автор решения: Andrei Popruha
→ Ссылка
Вы можете выделить повторяющийся код в отдельную функцию и вызывать эту функцию несколько раз в своем классе. 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();