This commit is contained in:
@@ -41,6 +41,10 @@ public class HttpRequest extends Request<HttpContext> {
|
|||||||
|
|
||||||
protected boolean rpc;
|
protected boolean rpc;
|
||||||
|
|
||||||
|
protected boolean frombody;
|
||||||
|
|
||||||
|
protected Convert reqConvert;
|
||||||
|
|
||||||
protected Convert respConvert;
|
protected Convert respConvert;
|
||||||
|
|
||||||
@Comment("Method GET/POST/...")
|
@Comment("Method GET/POST/...")
|
||||||
@@ -108,8 +112,14 @@ public class HttpRequest extends Request<HttpContext> {
|
|||||||
if (req.getBody() != null) this.array.write(req.getBody());
|
if (req.getBody() != null) this.array.write(req.getBody());
|
||||||
if (req.getHeaders() != null) {
|
if (req.getHeaders() != null) {
|
||||||
this.headers.putAll(req.getHeaders());
|
this.headers.putAll(req.getHeaders());
|
||||||
if (this.headers.containsKey(Rest.REST_HEADER_CONVERT_TYPE)) {
|
if (this.headers.containsKey(Rest.REST_HEADER_PARAM_FROM_BODY)) {
|
||||||
this.respConvert = ConvertFactory.findConvert(ConvertType.valueOf(this.headers.get(Rest.REST_HEADER_CONVERT_TYPE)));
|
this.frombody = "true".equals(this.headers.get(Rest.REST_HEADER_RESP_CONVERT_TYPE));
|
||||||
|
}
|
||||||
|
if (this.headers.containsKey(Rest.REST_HEADER_RESP_CONVERT_TYPE)) {
|
||||||
|
this.respConvert = ConvertFactory.findConvert(ConvertType.valueOf(this.headers.get(Rest.REST_HEADER_RESP_CONVERT_TYPE)));
|
||||||
|
}
|
||||||
|
if (this.headers.containsKey(Rest.REST_HEADER_REQ_CONVERT_TYPE)) {
|
||||||
|
this.reqConvert = ConvertFactory.findConvert(ConvertType.valueOf(this.headers.get(Rest.REST_HEADER_REQ_CONVERT_TYPE)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (req.getParams() != null) this.params.putAll(req.getParams());
|
if (req.getParams() != null) this.params.putAll(req.getParams());
|
||||||
@@ -251,7 +261,15 @@ public class HttpRequest extends Request<HttpContext> {
|
|||||||
this.currentUserid = value;
|
this.currentUserid = value;
|
||||||
headers.put(name, value);
|
headers.put(name, value);
|
||||||
break;
|
break;
|
||||||
case Rest.REST_HEADER_CONVERT_TYPE:
|
case Rest.REST_HEADER_PARAM_FROM_BODY:
|
||||||
|
this.frombody = "true".equalsIgnoreCase(value);
|
||||||
|
headers.put(name, value);
|
||||||
|
break;
|
||||||
|
case Rest.REST_HEADER_REQ_CONVERT_TYPE:
|
||||||
|
reqConvert = ConvertFactory.findConvert(ConvertType.valueOf(value));
|
||||||
|
headers.put(name, value);
|
||||||
|
break;
|
||||||
|
case Rest.REST_HEADER_RESP_CONVERT_TYPE:
|
||||||
respConvert = ConvertFactory.findConvert(ConvertType.valueOf(value));
|
respConvert = ConvertFactory.findConvert(ConvertType.valueOf(value));
|
||||||
headers.put(name, value);
|
headers.put(name, value);
|
||||||
break;
|
break;
|
||||||
@@ -561,9 +579,10 @@ public class HttpRequest extends Request<HttpContext> {
|
|||||||
* @return 内容
|
* @return 内容
|
||||||
*/
|
*/
|
||||||
public <T> T getBodyJson(java.lang.reflect.Type type) {
|
public <T> T getBodyJson(java.lang.reflect.Type type) {
|
||||||
String str = array.toString(StandardCharsets.UTF_8);
|
if (array == null || array.isEmpty()) return null;
|
||||||
if (str == null || str.isEmpty()) return null;
|
Convert convert = this.reqConvert;
|
||||||
return context.getJsonConvert().convertFrom(type, str);
|
if (convert == null) convert = context.getJsonConvert();
|
||||||
|
return (T) convert.convertFrom(type, array.directBytes());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -576,7 +595,7 @@ public class HttpRequest extends Request<HttpContext> {
|
|||||||
* @return 内容
|
* @return 内容
|
||||||
*/
|
*/
|
||||||
public <T> T getBodyJson(Convert convert, java.lang.reflect.Type type) {
|
public <T> T getBodyJson(Convert convert, java.lang.reflect.Type type) {
|
||||||
if (array.size() < 1) return null;
|
if (array.isEmpty()) return null;
|
||||||
return (T) convert.convertFrom(type, array.directBytes());
|
return (T) convert.convertFrom(type, array.directBytes());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -665,6 +684,7 @@ public class HttpRequest extends Request<HttpContext> {
|
|||||||
this.contentLength = -1;
|
this.contentLength = -1;
|
||||||
this.boundary = false;
|
this.boundary = false;
|
||||||
this.bodyparsed = false;
|
this.bodyparsed = false;
|
||||||
|
this.frombody = false;
|
||||||
this.moduleid = 0;
|
this.moduleid = 0;
|
||||||
this.actionid = 0;
|
this.actionid = 0;
|
||||||
this.annotations = null;
|
this.annotations = null;
|
||||||
@@ -673,6 +693,7 @@ public class HttpRequest extends Request<HttpContext> {
|
|||||||
this.remoteAddr = null;
|
this.remoteAddr = null;
|
||||||
|
|
||||||
this.attachment = null;
|
this.attachment = null;
|
||||||
|
this.reqConvert = null;
|
||||||
this.respConvert = jsonConvert;
|
this.respConvert = jsonConvert;
|
||||||
|
|
||||||
this.headers.clear();
|
this.headers.clear();
|
||||||
@@ -1572,6 +1593,12 @@ public class HttpRequest extends Request<HttpContext> {
|
|||||||
* @return 参数值
|
* @return 参数值
|
||||||
*/
|
*/
|
||||||
public String getParameter(String name) {
|
public String getParameter(String name) {
|
||||||
|
if (this.frombody) {
|
||||||
|
if (array.isEmpty()) return null;
|
||||||
|
Convert convert = this.reqConvert;
|
||||||
|
if (convert == null) convert = jsonConvert;
|
||||||
|
return (String) convert.convertFrom(String.class, array.directBytes());
|
||||||
|
}
|
||||||
parseBody();
|
parseBody();
|
||||||
return params.get(name);
|
return params.get(name);
|
||||||
}
|
}
|
||||||
@@ -1585,6 +1612,12 @@ public class HttpRequest extends Request<HttpContext> {
|
|||||||
* @return 参数值
|
* @return 参数值
|
||||||
*/
|
*/
|
||||||
public String getParameter(String name, String defaultValue) {
|
public String getParameter(String name, String defaultValue) {
|
||||||
|
if (this.frombody) {
|
||||||
|
if (array.isEmpty()) return defaultValue;
|
||||||
|
Convert convert = this.reqConvert;
|
||||||
|
if (convert == null) convert = jsonConvert;
|
||||||
|
return (String) convert.convertFrom(String.class, array.directBytes());
|
||||||
|
}
|
||||||
parseBody();
|
parseBody();
|
||||||
return params.getOrDefault(name, defaultValue);
|
return params.getOrDefault(name, defaultValue);
|
||||||
}
|
}
|
||||||
@@ -1599,6 +1632,12 @@ public class HttpRequest extends Request<HttpContext> {
|
|||||||
* @return 参数值
|
* @return 参数值
|
||||||
*/
|
*/
|
||||||
public <T> T getJsonParameter(java.lang.reflect.Type type, String name) {
|
public <T> T getJsonParameter(java.lang.reflect.Type type, String name) {
|
||||||
|
if (this.frombody) {
|
||||||
|
if (array.isEmpty()) return null;
|
||||||
|
Convert convert = this.reqConvert;
|
||||||
|
if (convert == null) convert = jsonConvert;
|
||||||
|
return (T) convert.convertFrom(type, array.directBytes());
|
||||||
|
}
|
||||||
String v = getParameter(name);
|
String v = getParameter(name);
|
||||||
return v == null || v.isEmpty() ? null : jsonConvert.convertFrom(type, v);
|
return v == null || v.isEmpty() ? null : jsonConvert.convertFrom(type, v);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,7 +44,11 @@ public final class Rest {
|
|||||||
|
|
||||||
public static final String REST_HEADER_CURRUSERID_NAME = "rest-curruserid-name";
|
public static final String REST_HEADER_CURRUSERID_NAME = "rest-curruserid-name";
|
||||||
|
|
||||||
public static final String REST_HEADER_CONVERT_TYPE = "rest-convert-type";
|
public static final String REST_HEADER_PARAM_FROM_BODY = "rest-paramfrombody";
|
||||||
|
|
||||||
|
public static final String REST_HEADER_REQ_CONVERT_TYPE = "rest-req-convert-type";
|
||||||
|
|
||||||
|
public static final String REST_HEADER_RESP_CONVERT_TYPE = "rest-resp-convert-type";
|
||||||
|
|
||||||
static final String REST_SERVICE_FIELD_NAME = "_redkale_service";
|
static final String REST_SERVICE_FIELD_NAME = "_redkale_service";
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user