From 71195a026f10e35fea03158b1ffce30da47a8185 Mon Sep 17 00:00:00 2001
From: wanggeng <450292408@qq.com>
Date: Sun, 19 Sep 2021 23:36:45 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BE=9D=E8=B5=96=EF=BC=8C?=
=?UTF-8?q?=E5=AE=8C=E5=96=84=E8=BF=9C=E7=A8=8B=E8=B0=83=E7=94=A8=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
basic-util/pom.xml | 7 -
.../remote/rest/RestRemoteRequestDemo.java | 45 -----
.../rest/handler/RestRemoteHandler.java | 132 +++++++++----
.../remote/rest/proxy/RestRemoteProxy.java | 14 --
.../rest/request/RestRemoteRequest.java | 177 ++++++++++++++++++
basic-util/src/test/java/RemoteTest.java | 88 +++++++++
6 files changed, 364 insertions(+), 99 deletions(-)
delete mode 100644 basic-util/src/main/java/ink/wgink/util/remote/rest/RestRemoteRequestDemo.java
create mode 100644 basic-util/src/test/java/RemoteTest.java
diff --git a/basic-util/pom.xml b/basic-util/pom.xml
index 01bd8d6f..fde7105e 100644
--- a/basic-util/pom.xml
+++ b/basic-util/pom.xml
@@ -152,13 +152,6 @@
1.0-SNAPSHOT
-
-
-
- cglib
- cglib
-
-
\ No newline at end of file
diff --git a/basic-util/src/main/java/ink/wgink/util/remote/rest/RestRemoteRequestDemo.java b/basic-util/src/main/java/ink/wgink/util/remote/rest/RestRemoteRequestDemo.java
deleted file mode 100644
index 591b4197..00000000
--- a/basic-util/src/main/java/ink/wgink/util/remote/rest/RestRemoteRequestDemo.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package ink.wgink.util.remote.rest;
-
-import net.sf.cglib.proxy.Enhancer;
-import net.sf.cglib.proxy.MethodInterceptor;
-import net.sf.cglib.proxy.MethodProxy;
-
-import java.lang.reflect.Method;
-
-/**
- * @ClassName: RestRemoteRequest
- * @Description: rest远程请求
- * @Author: wanggeng
- * @Date: 2021/9/18 4:23 下午
- * @Version: 1.0
- */
-public class RestRemoteRequestDemo implements MethodInterceptor {
-
-
- @Override
- public Object intercept(Object o, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
- return methodProxy.invokeSuper(o, args);
- }
-
- public static class RestRemoteRequestFactory {
- public static Object getProxy(Class> clazz) {
- Enhancer enhancer = new Enhancer();
- enhancer.setClassLoader(clazz.getClassLoader());
- enhancer.setSuperclass(clazz);
- enhancer.setCallback(new RestRemoteRequestDemo());
- return enhancer.create();
- }
- }
-
- public static class Demo {
- void say(String msg) {
- System.out.println(msg);
- }
- }
-
- public static void main(String[] args) {
- Demo demo = (Demo) RestRemoteRequestFactory.getProxy(Demo.class);
- demo.say("你好");
- }
-
-}
diff --git a/basic-util/src/main/java/ink/wgink/util/remote/rest/handler/RestRemoteHandler.java b/basic-util/src/main/java/ink/wgink/util/remote/rest/handler/RestRemoteHandler.java
index c98a0f52..3c426d06 100644
--- a/basic-util/src/main/java/ink/wgink/util/remote/rest/handler/RestRemoteHandler.java
+++ b/basic-util/src/main/java/ink/wgink/util/remote/rest/handler/RestRemoteHandler.java
@@ -1,9 +1,22 @@
package ink.wgink.util.remote.rest.handler;
+import ink.wgink.annotation.remote.RemoteServer;
+import ink.wgink.annotation.remote.method.RemoteDeleteMethod;
+import ink.wgink.annotation.remote.method.RemoteGetMethod;
+import ink.wgink.annotation.remote.method.RemotePostMethod;
+import ink.wgink.annotation.remote.method.RemotePutMethod;
+import ink.wgink.annotation.remote.params.RemoteHeaderParams;
+import ink.wgink.annotation.remote.params.RemoteJsonBodyParams;
+import ink.wgink.annotation.remote.params.RemotePathParams;
+import ink.wgink.annotation.remote.params.RemoteQueryParams;
import ink.wgink.exceptions.ParamsException;
import ink.wgink.exceptions.base.SystemException;
+import ink.wgink.util.RegexUtil;
+import ink.wgink.util.remote.rest.request.RestRemoteRequest;
import org.apache.commons.lang3.StringUtils;
-import org.springframework.web.bind.annotation.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.RequestMethod;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationHandler;
@@ -25,7 +38,7 @@ import java.util.regex.Pattern;
* @Version: 1.0
*/
public class RestRemoteHandler implements InvocationHandler {
-
+ private static final Logger LOG = LoggerFactory.getLogger(RestRemoteHandler.class);
private static final Pattern PATH_VARIABLE = Pattern.compile("\\{[^\\s\\}]+\\}");
@Override
@@ -41,34 +54,41 @@ public class RestRemoteHandler implements InvocationHandler {
* @return
*/
public Object handle(Method method, Object[] args) throws UnsupportedEncodingException {
+ if (method.getParameters().length == 0) {
+ throw new ParamsException("方法没有参数");
+ }
+ String remotePath = getRemotePath(method.getParameters(), args);
+ checkRemotePath(remotePath);
Map pathVariableParams = getPathVariableParams(method.getParameters(), args);
Map queryVariableParams = getQueryVariableParams(method.getParameters(), args);
Map headerVariableParams = getHeaderVariableParams(method.getParameters(), args);
String uri;
Object requestBody = null;
- RequestMethod requestMethod = null;
- if (method.isAnnotationPresent(GetMapping.class)) {
+ RequestMethod requestMethod;
+ if (method.isAnnotationPresent(RemoteGetMethod.class)) {
// GET请求
requestMethod = RequestMethod.GET;
- GetMapping getMapping = method.getAnnotation(GetMapping.class);
- uri = getMapping.value()[0];
- } else if (method.isAnnotationPresent(DeleteMapping.class)) {
+ RemoteGetMethod remoteGet = method.getAnnotation(RemoteGetMethod.class);
+ uri = remoteGet.value();
+ } else if (method.isAnnotationPresent(RemoteDeleteMethod.class)) {
// DELETE请求
requestMethod = RequestMethod.DELETE;
- DeleteMapping deleteMapping = method.getAnnotation(DeleteMapping.class);
- uri = deleteMapping.value()[0];
- } else if (method.isAnnotationPresent(PostMapping.class)) {
+ RemoteDeleteMethod deleteMethod = method.getAnnotation(RemoteDeleteMethod.class);
+ uri = deleteMethod.value();
+ } else if (method.isAnnotationPresent(RemotePostMethod.class)) {
// POST请求
requestMethod = RequestMethod.POST;
- PostMapping postMapping = method.getAnnotation(PostMapping.class);
- uri = postMapping.value()[0];
+ RemotePostMethod postMethod = method.getAnnotation(RemotePostMethod.class);
+ uri = postMethod.value();
requestBody = getRequestBody(method.getParameters(), args);
- } else if (method.isAnnotationPresent(PutMapping.class)) {
+ checkJsonBody(requestBody);
+ } else if (method.isAnnotationPresent(RemotePutMethod.class)) {
// PUT请求
requestMethod = RequestMethod.PUT;
- PutMapping putMapping = method.getAnnotation(PutMapping.class);
- uri = putMapping.value()[0];
+ RemotePutMethod putMethod = method.getAnnotation(RemotePutMethod.class);
+ uri = putMethod.value();
requestBody = getRequestBody(method.getParameters(), args);
+ checkJsonBody(requestBody);
} else {
return null;
}
@@ -76,13 +96,20 @@ public class RestRemoteHandler implements InvocationHandler {
checkPathVariables(pathVariable);
checkPathVariableParams(pathVariable, pathVariableParams);
uri = buildUri(uri, pathVariable, pathVariableParams);
- uri = buildFullUri(uri, queryVariableParams);
+ String remoteFullPath = buildFullUri(remotePath, uri, queryVariableParams);
- System.out.println("uri: " + uri);
+// LOG.debug("remoteFullUri: {}", remoteFullUri);
+// LOG.debug("requestBody: {}", requestBody);
+// LOG.debug("headerVariableParams: {}", headerVariableParams);
+// LOG.debug("requestMethod: {}", requestMethod.name());
+
+ System.out.println("remoteFullUri: " + remoteFullPath);
System.out.println("requestBody: " + requestBody);
System.out.println("headerVariableParams: " + headerVariableParams);
System.out.println("requestMethod: " + requestMethod.name());
- return uri;
+
+ RestRemoteRequest restRemoteRequest = new RestRemoteRequest();
+ return restRemoteRequest.request(requestMethod, remoteFullPath, headerVariableParams, requestBody, method.getGenericReturnType());
}
/**
@@ -111,10 +138,10 @@ public class RestRemoteHandler implements InvocationHandler {
Map pathVariableParamsMap = new HashMap<>();
for (int i = 0; i < parameters.length; i++) {
Parameter parameter = parameters[i];
- if (!parameter.isAnnotationPresent(PathVariable.class)) {
+ if (!parameter.isAnnotationPresent(RemotePathParams.class)) {
continue;
}
- PathVariable annotation = parameter.getAnnotation(PathVariable.class);
+ RemotePathParams annotation = parameter.getAnnotation(RemotePathParams.class);
String variableName = annotation.value();
if (StringUtils.isBlank(variableName)) {
throw new ParamsException("参数 " + parameter.getName() + " 名称不能为空");
@@ -139,10 +166,10 @@ public class RestRemoteHandler implements InvocationHandler {
Map queryVariableParamsMap = new HashMap<>();
for (int i = 0; i < parameters.length; i++) {
Parameter parameter = parameters[i];
- if (!parameter.isAnnotationPresent(RequestParam.class)) {
+ if (!parameter.isAnnotationPresent(RemoteQueryParams.class)) {
continue;
}
- RequestParam annotation = parameter.getAnnotation(RequestParam.class);
+ RemoteQueryParams annotation = parameter.getAnnotation(RemoteQueryParams.class);
String variableName = annotation.value();
if (StringUtils.isBlank(variableName)) {
throw new ParamsException("参数 " + parameter.getName() + " 名称不能为空");
@@ -167,10 +194,10 @@ public class RestRemoteHandler implements InvocationHandler {
Map headerVariableParamsMap = new HashMap<>();
for (int i = 0; i < parameters.length; i++) {
Parameter parameter = parameters[i];
- if (!parameter.isAnnotationPresent(RequestHeader.class)) {
+ if (!parameter.isAnnotationPresent(RemoteHeaderParams.class)) {
continue;
}
- RequestHeader annotation = parameter.getAnnotation(RequestHeader.class);
+ RemoteHeaderParams annotation = parameter.getAnnotation(RemoteHeaderParams.class);
String variableName = annotation.value();
if (StringUtils.isBlank(variableName)) {
throw new ParamsException("参数 " + parameter.getName() + " 名称不能为空");
@@ -187,14 +214,17 @@ public class RestRemoteHandler implements InvocationHandler {
/**
* 获取请求体,只取第一个
*
- * @param parameters
+ * @param parameters 方法参数
* @param args
* @return
*/
private Object getRequestBody(Parameter[] parameters, Object[] args) {
for (int i = 0; i < parameters.length; i++) {
Parameter parameter = parameters[i];
- if (!parameter.isAnnotationPresent(RequestBody.class)) {
+ if (!parameter.isAnnotationPresent(RemoteJsonBodyParams.class)) {
+ continue;
+ }
+ if (args[i] == null) {
continue;
}
return args[i];
@@ -202,6 +232,26 @@ public class RestRemoteHandler implements InvocationHandler {
return null;
}
+ /**
+ * 获取远程地址,只取第一个
+ *
+ * @param parameters 方法参数
+ * @param args 参数
+ * @return
+ */
+ private String getRemotePath(Parameter[] parameters, Object[] args) {
+ for (int i = 0; i < parameters.length; i++) {
+ Parameter parameter = parameters[i];
+ if (!parameter.isAnnotationPresent(RemoteServer.class)) {
+ continue;
+ }
+ if (args[i] == null) {
+ continue;
+ }
+ return args[i].toString();
+ }
+ return null;
+ }
/**
* 检查路径变量
@@ -247,12 +297,26 @@ public class RestRemoteHandler implements InvocationHandler {
*
* @param requestBody
*/
- private void checkRequestBody(Object requestBody) {
+ private void checkJsonBody(Object requestBody) {
if (requestBody == null) {
throw new ParamsException("请求主体不能为空");
}
}
+ /**
+ * 校验远程请求路径
+ *
+ * @param remotePath
+ */
+ private void checkRemotePath(String remotePath) {
+ if (StringUtils.isBlank(remotePath)) {
+ throw new ParamsException("远程请求路径不能为空");
+ }
+ if (!RegexUtil.isUrl(remotePath)) {
+ throw new ParamsException("远程请求路径格式错误");
+ }
+ }
+
/**
* 构建uri
*
@@ -266,20 +330,22 @@ public class RestRemoteHandler implements InvocationHandler {
for (String pathVariable : pathVariables) {
resultUri = resultUri.replace("{" + pathVariable + "}", pathVariableParams.get(pathVariable));
}
- return resultUri;
+ return resultUri.startsWith("/") ? resultUri : "/" + resultUri;
}
/**
* 构建完整路径
*
- * @param uri
- * @param queryVariableParams
+ * @param remotePath 远程调用地址
+ * @param uri 请求路径
+ * @param queryVariableParams 查询参数
* @return
* @throws UnsupportedEncodingException
*/
- private String buildFullUri(String uri, Map queryVariableParams) {
+ private String buildFullUri(String remotePath, String uri, Map queryVariableParams) {
+ String remote = remotePath.endsWith("/") ? remotePath.substring(0, remotePath.length() - 1) : remotePath;
if (queryVariableParams.isEmpty()) {
- return uri;
+ return remotePath + uri;
}
StringBuilder queryParams = new StringBuilder();
for (Map.Entry kv : queryVariableParams.entrySet()) {
@@ -288,7 +354,7 @@ public class RestRemoteHandler implements InvocationHandler {
}
queryParams.append(kv.getKey()).append("=").append(kv.getValue());
}
- return uri + "?" + queryParams;
+ return remote + uri + "?" + queryParams;
}
}
diff --git a/basic-util/src/main/java/ink/wgink/util/remote/rest/proxy/RestRemoteProxy.java b/basic-util/src/main/java/ink/wgink/util/remote/rest/proxy/RestRemoteProxy.java
index ffe27960..dab6be19 100644
--- a/basic-util/src/main/java/ink/wgink/util/remote/rest/proxy/RestRemoteProxy.java
+++ b/basic-util/src/main/java/ink/wgink/util/remote/rest/proxy/RestRemoteProxy.java
@@ -1,10 +1,6 @@
package ink.wgink.util.remote.rest.proxy;
import ink.wgink.util.remote.rest.handler.RestRemoteHandler;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.bind.annotation.RequestParam;
import java.lang.reflect.Proxy;
@@ -23,14 +19,4 @@ public class RestRemoteProxy {
return (T) o;
}
- public interface IDemo {
- @GetMapping("/demo/{p2}/{p1}")
- String test(@PathVariable("p1") String p1, @PathVariable("p2") String p2, @RequestParam("q1") String q1, @RequestParam("q2") String q2, @RequestHeader("access_token") String token, @RequestHeader("auth") String auth);
- }
-
- public static void main(String[] args) {
- IDemo instance = RestRemoteProxy.getInstance(IDemo.class);
- instance.test("pp1", "我是", null, "中国人", "token123456", null);
- }
-
}
diff --git a/basic-util/src/main/java/ink/wgink/util/remote/rest/request/RestRemoteRequest.java b/basic-util/src/main/java/ink/wgink/util/remote/rest/request/RestRemoteRequest.java
index baafa51a..121f3005 100644
--- a/basic-util/src/main/java/ink/wgink/util/remote/rest/request/RestRemoteRequest.java
+++ b/basic-util/src/main/java/ink/wgink/util/remote/rest/request/RestRemoteRequest.java
@@ -1,5 +1,20 @@
package ink.wgink.util.remote.rest.request;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import ink.wgink.exceptions.ParamsException;
+import ink.wgink.exceptions.remote.RemoteRequestException;
+import ink.wgink.exceptions.remote.RemoteResponseException;
+import org.springframework.http.*;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.client.HttpClientErrorException;
+import org.springframework.web.client.RestTemplate;
+
+import java.lang.reflect.Type;
+import java.util.Collection;
+import java.util.Map;
+
/**
* When you feel like quitting. Think about why you started
* 当你想要放弃的时候,想想当初你为何开始
@@ -11,4 +26,166 @@ package ink.wgink.util.remote.rest.request;
* @Version: 1.0
**/
public class RestRemoteRequest {
+
+ private RestTemplate restTemplate;
+
+ public RestRemoteRequest() {
+ HttpComponentsClientHttpRequestFactory httpComponentsClientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();
+ httpComponentsClientHttpRequestFactory.setConnectTimeout(20 * 1000);
+ httpComponentsClientHttpRequestFactory.setReadTimeout(60 * 1000);
+ this.restTemplate = new RestTemplate(httpComponentsClientHttpRequestFactory);
+ }
+
+ public Object request(RequestMethod requestMethod, String remoteUri, Map headers, Object jsonBody, Type resultType) {
+ String result;
+ if (RequestMethod.GET.equals(requestMethod)) {
+ result = get(remoteUri, headers);
+ } else if (RequestMethod.DELETE.equals(requestMethod)) {
+ result = delete(remoteUri, headers);
+ } else if (RequestMethod.POST.equals(requestMethod)) {
+ result = post(remoteUri, headers, jsonBody);
+ } else if (RequestMethod.PUT.equals(requestMethod)) {
+ result = put(remoteUri, headers, jsonBody);
+ } else {
+ throw new ParamsException("请求方法不支持");
+ }
+ // 除了结合其余均按对象
+ return JSONObject.parseObject(result, resultType);
+ }
+
+ /**
+ * GET请求
+ *
+ * @param remoteUri
+ * @param headers
+ * @return
+ */
+ public String get(String remoteUri, Map headers) {
+ try {
+ HttpEntity httpEntity = getHttpEntity(headers, null);
+ ResponseEntity responseEntity = restTemplate.exchange(remoteUri, HttpMethod.GET, httpEntity, String.class);
+ return getStringResponse(responseEntity);
+ } catch (Exception e) {
+ e.printStackTrace();
+ if (e instanceof HttpClientErrorException) {
+ HttpClientErrorException exception = (HttpClientErrorException) e;
+ throw new RemoteResponseException(exception.getResponseBodyAsString());
+ }
+ throw new RemoteRequestException(e.getMessage(), e);
+ }
+ }
+
+ /**
+ * DELETE请求
+ *
+ * @param remoteUri
+ * @param headers
+ * @return
+ */
+ public String delete(String remoteUri, Map headers) {
+ try {
+ HttpEntity httpEntity = getHttpEntity(headers, null);
+ ResponseEntity responseEntity = restTemplate.exchange(remoteUri, HttpMethod.DELETE, httpEntity, String.class);
+ return getStringResponse(responseEntity);
+ } catch (Exception e) {
+ if (e instanceof HttpClientErrorException) {
+ HttpClientErrorException exception = (HttpClientErrorException) e;
+ throw new RemoteResponseException(exception.getResponseBodyAsString());
+ }
+ throw new RemoteRequestException(e.getMessage(), e);
+ }
+ }
+
+ /**
+ * POST请求
+ *
+ * @param remoteUri
+ * @param headers
+ * @return
+ */
+ public String post(String remoteUri, Map headers, Object jsonBody) {
+ try {
+ HttpEntity httpEntity = getHttpEntity(headers, jsonBody);
+ ResponseEntity responseEntity = restTemplate.exchange(remoteUri, HttpMethod.POST, httpEntity, String.class);
+ return getStringResponse(responseEntity);
+ } catch (Exception e) {
+ if (e instanceof HttpClientErrorException) {
+ HttpClientErrorException exception = (HttpClientErrorException) e;
+ throw new RemoteResponseException(exception.getResponseBodyAsString());
+ }
+ throw new RemoteRequestException(e.getMessage(), e);
+ }
+ }
+
+ /**
+ * PUT请求
+ *
+ * @param remoteUri
+ * @param headers
+ * @return
+ */
+ public String put(String remoteUri, Map headers, Object jsonBody) {
+ try {
+ HttpEntity httpEntity = getHttpEntity(headers, jsonBody);
+ ResponseEntity responseEntity = restTemplate.exchange(remoteUri, HttpMethod.PUT, httpEntity, String.class);
+ return getStringResponse(responseEntity);
+ } catch (Exception e) {
+ if (e instanceof HttpClientErrorException) {
+ HttpClientErrorException exception = (HttpClientErrorException) e;
+ throw new RemoteResponseException(exception.getResponseBodyAsString());
+ }
+ throw new RemoteRequestException(e.getMessage(), e);
+ }
+ }
+
+ /**
+ * 请求实体
+ *
+ * @param headerMap
+ * @param jsonBody
+ * @return
+ */
+ private HttpEntity getHttpEntity(Map headerMap, Object jsonBody) {
+ HttpEntity httpEntity;
+ if (jsonBody != null) {
+ if (jsonBody instanceof Collection) {
+ httpEntity = new HttpEntity(JSONArray.toJSONString(jsonBody), getHttpHeaders(headerMap));
+ } else {
+ httpEntity = new HttpEntity(JSONObject.toJSONString(jsonBody), getHttpHeaders(headerMap));
+ }
+ } else {
+ httpEntity = new HttpEntity(getHttpHeaders(headerMap));
+ }
+ return httpEntity;
+ }
+
+ /**
+ * 得到HTTP请求头
+ *
+ * @param headersMap
+ * @return
+ */
+ private HttpHeaders getHttpHeaders(Map headersMap) {
+ HttpHeaders httpHeaders = new HttpHeaders();
+ httpHeaders.add("Accept", MediaType.APPLICATION_JSON_VALUE);
+ httpHeaders.add("Content-Type", MediaType.APPLICATION_JSON_VALUE);
+ for (Map.Entry kv : headersMap.entrySet()) {
+ httpHeaders.add(kv.getKey(), kv.getValue());
+ }
+ return httpHeaders;
+ }
+
+ /**
+ * 得到响应结果
+ *
+ * @param responseEntity
+ * @return
+ */
+ private String getStringResponse(ResponseEntity responseEntity) {
+ if (responseEntity.getStatusCode() != HttpStatus.OK) {
+ throw new RemoteResponseException("远程调用响应状态码不支持: " + responseEntity.getStatusCode());
+ }
+ return responseEntity.getBody();
+ }
+
}
diff --git a/basic-util/src/test/java/RemoteTest.java b/basic-util/src/test/java/RemoteTest.java
new file mode 100644
index 00000000..0cef37e6
--- /dev/null
+++ b/basic-util/src/test/java/RemoteTest.java
@@ -0,0 +1,88 @@
+import ink.wgink.annotation.remote.RemoteServer;
+import ink.wgink.annotation.remote.method.RemoteDeleteMethod;
+import ink.wgink.annotation.remote.method.RemoteGetMethod;
+import ink.wgink.annotation.remote.method.RemotePostMethod;
+import ink.wgink.annotation.remote.method.RemotePutMethod;
+import ink.wgink.annotation.remote.params.RemoteJsonBodyParams;
+import ink.wgink.annotation.remote.params.RemotePathParams;
+import ink.wgink.annotation.remote.params.RemoteQueryParams;
+import ink.wgink.pojo.dtos.user.UserDTO;
+import ink.wgink.pojo.result.SuccessResult;
+import ink.wgink.pojo.result.SuccessResultList;
+import ink.wgink.util.remote.rest.proxy.RestRemoteProxy;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName: RemoteTest
+ * @Description: 远程调用
+ * @Author: wanggeng
+ * @Date: 2021/9/19 11:28 下午
+ * @Version: 1.0
+ */
+public class RemoteTest {
+
+ public interface IDemo {
+ @RemoteGetMethod("/app/user-expand/get-user-release/{userId}")
+ UserDTO getUser(@RemoteServer String remotePath, @RemotePathParams("userId") String userId);
+
+ @RemoteGetMethod("/app/user-expand/list-user-release")
+ List listUser(@RemoteServer String remotePath);
+
+ @RemoteGetMethod("/app/user-expand/listpage-user-release")
+ SuccessResultList> listPageUser(@RemoteServer String remotePath, @RemoteQueryParams("page") Integer page, @RemoteQueryParams("size") Integer size);
+
+ @RemotePostMethod("/app/user-expand/save-release")
+ SuccessResult postRelease(@RemoteServer String remotePath, @RemoteJsonBodyParams Map params);
+
+ @RemotePostMethod("/app/user-expand/save-list-release")
+ SuccessResult postListRelease(@RemoteServer String remotePath, @RemoteJsonBodyParams List