完善rest请求方法

This commit is contained in:
wanggeng 2021-07-23 21:23:01 +08:00
parent ab58ad626e
commit e60b80b664

View File

@ -17,7 +17,7 @@ import org.springframework.web.client.RestTemplate;
* @Date: 2021/3/31 12:18 下午 * @Date: 2021/3/31 12:18 下午
* @Version: 1.0 * @Version: 1.0
*/ */
public abstract class AbstractRestTemplate<SuccessResultType, PostBodyType> { public abstract class AbstractRestTemplate<SuccessResultType, BodyType> {
private static final Logger LOG = LoggerFactory.getLogger(AbstractRestTemplate.class); private static final Logger LOG = LoggerFactory.getLogger(AbstractRestTemplate.class);
private RestTemplate restTemplate; private RestTemplate restTemplate;
@ -55,11 +55,11 @@ public abstract class AbstractRestTemplate<SuccessResultType, PostBodyType> {
} }
/** /**
* POST请求主体 * 请求主体
* *
* @return * @return
*/ */
public abstract PostBodyType postBody(); public abstract BodyType body();
/** /**
* 成功返回类型 * 成功返回类型
@ -97,6 +97,35 @@ public abstract class AbstractRestTemplate<SuccessResultType, PostBodyType> {
} }
} }
/**
* DELETE请求
*
* @param url
*/
public void delete(String url) {
Class<SuccessResultType> successResultTypeClass = successResultType();
if (successResultTypeClass == null) {
LOG.error("method successResultType can not return null");
return;
}
try {
ResponseEntity<SuccessResultType> responseEntity = restTemplate.exchange(url, HttpMethod.DELETE, null, successResultTypeClass);
SuccessResultType result = responseEntity.getBody();
if (HttpStatus.OK.value() == responseEntity.getStatusCodeValue()) {
success200(result);
}
} catch (Exception e) {
if (e instanceof HttpClientErrorException) {
HttpClientErrorException exception = (HttpClientErrorException) e;
if (exception.getRawStatusCode() == HttpStatus.BAD_REQUEST.value()) {
error400(exception);
return;
}
}
e.printStackTrace();
}
}
/** /**
* POST提交FORM * POST提交FORM
* *
@ -115,10 +144,19 @@ public abstract class AbstractRestTemplate<SuccessResultType, PostBodyType> {
post(url, true); post(url, true);
} }
/**
* put
*
* @param url
*/
public void put(String url) {
post(url, true);
}
private void post(String url, boolean isJson) { private void post(String url, boolean isJson) {
PostBodyType postBodyType = postBody(); BodyType bodyType = body();
Class<SuccessResultType> successResultTypeClass = successResultType(); Class<SuccessResultType> successResultTypeClass = successResultType();
if (postBodyType == null) { if (bodyType == null) {
LOG.error("method postBody can not return null"); LOG.error("method postBody can not return null");
return; return;
} }
@ -127,7 +165,7 @@ public abstract class AbstractRestTemplate<SuccessResultType, PostBodyType> {
return; return;
} }
try { try {
HttpEntity<PostBodyType> httpEntity = new HttpEntity<>(postBodyType, isJson ? jsonHeaders() : formHeaders()); HttpEntity<BodyType> httpEntity = new HttpEntity<>(bodyType, isJson ? jsonHeaders() : formHeaders());
ResponseEntity<SuccessResultType> responseEntity = restTemplate.postForEntity(url, httpEntity, successResultTypeClass); ResponseEntity<SuccessResultType> responseEntity = restTemplate.postForEntity(url, httpEntity, successResultTypeClass);
SuccessResultType result = responseEntity.getBody(); SuccessResultType result = responseEntity.getBody();
if (HttpStatus.OK.value() == responseEntity.getStatusCodeValue()) { if (HttpStatus.OK.value() == responseEntity.getStatusCodeValue()) {
@ -153,6 +191,8 @@ public abstract class AbstractRestTemplate<SuccessResultType, PostBodyType> {
public abstract void success200(SuccessResultType result); public abstract void success200(SuccessResultType result);
/** /**
* 错误
*
* @param error * @param error
*/ */
public abstract void error400(HttpClientErrorException error); public abstract void error400(HttpClientErrorException error);