feat: 1.0.5版本升级,一个小补丁
This commit is contained in:
parent
0b2ccbf3e7
commit
43e89f7399
@ -4,6 +4,7 @@ import group.flyfish.rest.core.ThreadPoolManager;
|
||||
import group.flyfish.rest.core.builder.TypedMapBuilder;
|
||||
import group.flyfish.rest.core.resolver.*;
|
||||
import group.flyfish.rest.enums.HttpMethod;
|
||||
import group.flyfish.rest.enums.ResponseType;
|
||||
import org.apache.http.client.config.RequestConfig;
|
||||
|
||||
import java.util.Map;
|
||||
@ -206,4 +207,11 @@ public interface RestConstants {
|
||||
static TypedMapBuilder<HttpMethod, HttpMethodResolver> resolverBuilder() {
|
||||
return TypedMapBuilder.builder();
|
||||
}
|
||||
|
||||
// 响应类型映射
|
||||
Map<String, ResponseType> RESPONSE_TYPE_MAP = TypedMapBuilder.<String, ResponseType>builder()
|
||||
.with(TypeConstants.STRING, ResponseType.TEXT)
|
||||
.with(TypeConstants.BYTE_ARRAY, ResponseType.BINARY)
|
||||
.build();
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,13 @@
|
||||
package group.flyfish.rest.constants;
|
||||
|
||||
/**
|
||||
* 类型常量
|
||||
*
|
||||
* @author wangyu
|
||||
*/
|
||||
public interface TypeConstants {
|
||||
|
||||
String STRING = "java.lang.String";
|
||||
|
||||
String BYTE_ARRAY = "[B";
|
||||
}
|
@ -2,6 +2,7 @@ package group.flyfish.rest.core.client;
|
||||
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.JavaType;
|
||||
import group.flyfish.rest.constants.RestConstants;
|
||||
import group.flyfish.rest.core.exception.RestClientException;
|
||||
import group.flyfish.rest.core.factory.HttpClientFactoryBean;
|
||||
import group.flyfish.rest.core.factory.HttpClientProvider;
|
||||
@ -214,7 +215,7 @@ final class DefaultRestClient implements RestClient {
|
||||
@Nullable
|
||||
@Override
|
||||
public <T> T execute(Class<T> clazz) {
|
||||
this.responseType = ResponseType.OBJECT;
|
||||
this.responseType = resolveType(clazz);
|
||||
this.resultClass = clazz;
|
||||
try {
|
||||
return innerExecute();
|
||||
@ -234,7 +235,7 @@ final class DefaultRestClient implements RestClient {
|
||||
@Nullable
|
||||
@Override
|
||||
public <T> T execute(JavaType type) {
|
||||
this.responseType = ResponseType.OBJECT;
|
||||
this.responseType = resolveType(type.getRawClass());
|
||||
this.resultType = type;
|
||||
try {
|
||||
return innerExecute();
|
||||
@ -289,6 +290,7 @@ final class DefaultRestClient implements RestClient {
|
||||
HttpEntity entity = response.getEntity();
|
||||
if (consumer != null) {
|
||||
consumer.accept(entity);
|
||||
return null;
|
||||
}
|
||||
return resolveResponse(entity);
|
||||
} else {
|
||||
@ -305,6 +307,16 @@ final class DefaultRestClient implements RestClient {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析目标类型
|
||||
*
|
||||
* @param clazz 简单类型
|
||||
* @return 响应类型
|
||||
*/
|
||||
private ResponseType resolveType(Class<?> clazz) {
|
||||
return RestConstants.RESPONSE_TYPE_MAP.getOrDefault(clazz.getName(), ResponseType.OBJECT);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析结果
|
||||
*
|
||||
|
@ -77,9 +77,6 @@ public final class JacksonUtil {
|
||||
if (null == json || "".equals(json)) {
|
||||
return null;
|
||||
}
|
||||
if (String.class.isAssignableFrom(clazz)) {
|
||||
return DataUtils.cast(json);
|
||||
}
|
||||
try {
|
||||
return mapper.readValue(json, clazz);
|
||||
} catch (IOException e) {
|
||||
@ -89,9 +86,6 @@ public final class JacksonUtil {
|
||||
}
|
||||
|
||||
public static <T> T fromJson(final String json, JavaType type) {
|
||||
if (type.isTypeOrSubTypeOf(String.class)) {
|
||||
return DataUtils.cast(json);
|
||||
}
|
||||
if (null == json || "".equals(json)) {
|
||||
return null;
|
||||
}
|
||||
|
@ -48,6 +48,12 @@ public class MultipartTest {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void download() {
|
||||
byte[] data = testRestService.downloadByte();
|
||||
System.out.println(data.length);
|
||||
}
|
||||
|
||||
@RestService(baseUrl = "http://localhost:8999", timeout = 500)
|
||||
public interface TestRestService {
|
||||
|
||||
@ -56,5 +62,8 @@ public class MultipartTest {
|
||||
|
||||
@RestApi(uri = "/files", method = HttpMethod.POST)
|
||||
String uploadAnno(@RestPart("fbl") InputStream file, @RestPart.Filename("fbl") String name);
|
||||
|
||||
@RestApi(uri = "/files")
|
||||
byte[] downloadByte();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user