Skip to content

fix rest #21

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 16, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

<groupId>com.codingapi.springboot</groupId>
<artifactId>springboot-parent</artifactId>
<version>1.5.3</version>
<version>1.5.4</version>

<url>https://github.com/codingapi/springboot-framewrok</url>
<name>springboot-parent</name>
Expand Down
2 changes: 1 addition & 1 deletion springboot-starter-data-fast/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>springboot-parent</artifactId>
<groupId>com.codingapi.springboot</groupId>
<version>1.5.3</version>
<version>1.5.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion springboot-starter-id-generator/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>springboot-parent</artifactId>
<groupId>com.codingapi.springboot</groupId>
<version>1.5.3</version>
<version>1.5.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion springboot-starter-security-jwt/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<artifactId>springboot-parent</artifactId>
<groupId>com.codingapi.springboot</groupId>
<version>1.5.3</version>
<version>1.5.4</version>
</parent>

<artifactId>springboot-starter-security-jwt</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion springboot-starter/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>com.codingapi.springboot</groupId>
<artifactId>springboot-parent</artifactId>
<version>1.5.3</version>
<version>1.5.4</version>
</parent>
<artifactId>springboot-starter</artifactId>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,20 @@
@Slf4j
public class HttpClient {

public interface IHttpRequestHandler{
String handler(HttpClient client,String uri,HttpMethod method,HttpHeaders headers,HttpEntity<?> httpEntity);
}

public interface IHttpResponseHandler{
String toResponse(HttpClient client,String uri,ResponseEntity<String> response);
String handler(HttpClient client,String uri,ResponseEntity<String> response);
}

private final RestTemplate restTemplate;

private final IHttpResponseHandler responseHandler;

private final IHttpRequestHandler requestHandler;

private static final IHttpResponseHandler defaultResponseHandler = new IHttpResponseHandler() {

public HttpHeaders copyHeaders(HttpHeaders headers){
Expand All @@ -42,7 +48,7 @@ public HttpHeaders copyHeaders(HttpHeaders headers){
}

@Override
public String toResponse(HttpClient client, String url, ResponseEntity<String> response) {
public String handler(HttpClient client, String url, ResponseEntity<String> response) {
if(response.getStatusCode().equals(HttpStatus.OK)){
return response.getBody();
}
Expand All @@ -63,6 +69,14 @@ public String toResponse(HttpClient client, String url, ResponseEntity<String> r
}
};

private static final IHttpRequestHandler defaultRequestHandler = new IHttpRequestHandler() {

@Override
public String handler(HttpClient client, String uri,HttpMethod method, HttpHeaders headers, HttpEntity<?> httpEntity) {
return uri;
}
};

private static final ResponseErrorHandler defaultErrorHandler = new DefaultResponseErrorHandler() {
@Override
public boolean hasError(ClientHttpResponse response) throws IOException {
Expand All @@ -74,19 +88,20 @@ public boolean hasError(ClientHttpResponse response) throws IOException {
};

public HttpClient() {
this(null,defaultResponseHandler);
this(null,defaultRequestHandler,defaultResponseHandler);
}

public HttpClient(IHttpResponseHandler responseHandler) {
this(null,responseHandler);
public HttpClient(IHttpRequestHandler requestHandler,IHttpResponseHandler responseHandler) {
this(null,requestHandler,responseHandler);
}

public HttpClient(HttpProxyProperties properties) {
this(properties,defaultResponseHandler);
this(properties,defaultRequestHandler,defaultResponseHandler);
}

public HttpClient(HttpProxyProperties properties,IHttpResponseHandler responseHandler) {
this.responseHandler = responseHandler;
public HttpClient(HttpProxyProperties properties,IHttpRequestHandler requestHandler,IHttpResponseHandler responseHandler) {
this.requestHandler = requestHandler==null?defaultRequestHandler:requestHandler;
this.responseHandler = responseHandler==null?defaultResponseHandler:responseHandler;
this.restTemplate = RestTemplateContext.getInstance().getRestTemplate();
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(3000);
Expand All @@ -106,14 +121,16 @@ public HttpClient(HttpProxyProperties properties,IHttpResponseHandler responseHa

public String post(String url, HttpHeaders headers, JSON jsonObject) {
HttpEntity<String> httpEntity = new HttpEntity<>(jsonObject.toString(SerializerFeature.WriteMapNullValue), headers);
ResponseEntity<String> httpResponse = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
return responseHandler.toResponse(this,url,httpResponse);
String requestUrl = requestHandler.handler(this,url, HttpMethod.POST,headers,httpEntity);
ResponseEntity<String> httpResponse = restTemplate.exchange(requestUrl, HttpMethod.POST, httpEntity, String.class);
return responseHandler.handler(this,url,httpResponse);
}

public String post(String url, HttpHeaders headers, MultiValueMap<String, String> formData) {
HttpEntity<MultiValueMap<String, String>> httpEntity = new HttpEntity<>(formData, headers);
ResponseEntity<String> httpResponse = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
return responseHandler.toResponse(this,url,httpResponse);
String requestUrl = requestHandler.handler(this,url ,HttpMethod.POST,headers,httpEntity);
ResponseEntity<String> httpResponse = restTemplate.exchange(requestUrl, HttpMethod.POST, httpEntity, String.class);
return responseHandler.handler(this,url,httpResponse);
}

public String get(String url, HttpHeaders headers, MultiValueMap<String, String> uriVariables) {
Expand All @@ -123,11 +140,13 @@ public String get(String url, HttpHeaders headers, MultiValueMap<String, String>
URI uri = UriComponentsBuilder.fromHttpUrl(url)
.queryParams(uriVariables)
.build(true).toUri();
httpResponse = restTemplate.exchange(uri, HttpMethod.GET, httpEntity, String.class);
String requestUrl = requestHandler.handler(this,uri.toString(), HttpMethod.GET,headers,httpEntity);
httpResponse = restTemplate.exchange(requestUrl, HttpMethod.GET, httpEntity, String.class);
}else{
httpResponse = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class);
String requestUrl = requestHandler.handler(this,url, HttpMethod.GET,headers,httpEntity);
httpResponse = restTemplate.exchange(requestUrl, HttpMethod.GET, httpEntity, String.class);
}
return responseHandler.toResponse(this, url, httpResponse);
return responseHandler.handler(this, url, httpResponse);
}


Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package com.codingapi.springboot.framework.rest;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSON;
import com.codingapi.springboot.framework.rest.param.RestParamBuilder;
import com.codingapi.springboot.framework.rest.properties.HttpProxyProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.util.MultiValueMap;

@Slf4j
public class RestClient {
Expand All @@ -20,17 +21,22 @@ public class RestClient {

private final String baseUrl;

public RestClient(HttpProxyProperties httpProxyProperties, String baseUrl,int retryCount,String emptyResponse) {
public RestClient(HttpProxyProperties httpProxyProperties,
String baseUrl,
int retryCount,
String emptyResponse,
HttpClient.IHttpRequestHandler requestHandler,
HttpClient.IHttpResponseHandler responseHandler) {
this.baseUrl = baseUrl;
this.retryCount = retryCount;
this.httpClient = new HttpClient(httpProxyProperties);
this.httpClient = new HttpClient(httpProxyProperties,requestHandler,responseHandler);
this.httpHeaders = new HttpHeaders();
this.emptyResponse = emptyResponse;
this.initHeaders();
}

public RestClient(String baseUrl) {
this(null, baseUrl,5,"{}");
this(null, baseUrl,5,"{}",null,null);
}

private void initHeaders() {
Expand All @@ -41,14 +47,10 @@ private String toUrl(String api) {
return baseUrl + api;
}

private String _get(String api, HttpHeaders headers, RestParamBuilder paramBuilder) {
return httpClient.get(toUrl(api), headers, paramBuilder != null ? paramBuilder.toFormRequest() : null);
}

public String get(String api, HttpHeaders headers, RestParamBuilder paramBuilder) {
public String get(String api, HttpHeaders headers, MultiValueMap<String, String> requestParams) {
for (int i = 0; i < retryCount; i++) {
try {
return _get(api, headers, paramBuilder);
return httpClient.get(toUrl(api), headers, requestParams);
} catch (Exception e) {
log.warn("api:{},error:{}", api, e.getMessage());
sleep();
Expand All @@ -57,31 +59,35 @@ public String get(String api, HttpHeaders headers, RestParamBuilder paramBuilder
return emptyResponse;
}

public String get(String api, HttpHeaders headers, RestParamBuilder paramBuilder) {
return get(api, headers,paramBuilder!=null?paramBuilder.toFormRequest():null);
}

public String get(String api, RestParamBuilder paramBuilder) {
return get(api, httpHeaders, paramBuilder);
}

public String get(String api) {
return get(api, httpHeaders, null);
return get(api, httpHeaders, (RestParamBuilder) null);
}

public String get(String api, HttpHeaders headers) {
return get(api, headers, null);
return get(api, headers, (RestParamBuilder) null);
}

private String _post(String api, HttpHeaders headers, JSONObject requestBody) {
private String _post(String api, HttpHeaders headers, JSON requestBody) {
return httpClient.post(toUrl(api), headers, requestBody);
}

public String post(String api, JSONObject requestBody) {
public String post(String api, JSON requestBody) {
return post(api, httpHeaders, requestBody);
}

public String post(String api, RestParamBuilder paramBuilder) {
return post(api, httpHeaders, paramBuilder.toJsonRequest());
}

public String post(String api, HttpHeaders headers, JSONObject requestBody) {
public String post(String api, HttpHeaders headers, JSON requestBody) {
for (int i = 0; i < retryCount; i++) {
try {
return _post(api, headers, requestBody);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.codingapi.springboot.framework.rest;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSON;
import com.codingapi.springboot.framework.rest.param.RestParamBuilder;
import com.codingapi.springboot.framework.rest.properties.HttpProxyProperties;
import lombok.Getter;
Expand Down Expand Up @@ -34,7 +34,7 @@ public HttpHeaders copyHeaders(HttpHeaders headers) {
}

@Override
public String toResponse(HttpClient client, String url, ResponseEntity<String> response) {
public String handler(HttpClient client, String url, ResponseEntity<String> response) {
if (response.getStatusCode().equals(HttpStatus.OK)) {
return response.getBody();
}
Expand All @@ -54,7 +54,7 @@ public String toResponse(HttpClient client, String url, ResponseEntity<String> r
return response.getBody();
}
};
this.httpClient = new HttpClient(properties, responseHandler);
this.httpClient = new HttpClient(properties, null,responseHandler);
this.httpHeaders = new HttpHeaders();
}

Expand All @@ -77,7 +77,7 @@ public String postJson(String url, RestParamBuilder restParam){
return httpClient.post(url,httpHeaders,restParam.toJsonRequest());
}

public String postJson(String url, JSONObject requestBody){
public String postJson(String url, JSON requestBody){
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
return httpClient.post(url,httpHeaders,requestBody);
}
Expand Down