Browse Source

修复设置参数类型无效的问题

mxd 3 years ago
parent
commit
fe37a91ebf

+ 26 - 20
magic-api/src/main/java/org/ssssssss/magicapi/controller/RequestHandler.java

@@ -109,16 +109,34 @@ public class RequestHandler extends MagicController {
 		try {
 			// 验证参数
 			doValidate(scriptName, "参数", info.getParameters(), parameters, PARAMETER_INVALID);
-			// 验证 header
-			doValidate(scriptName, "header", info.getHeaders(), headers, HEADER_INVALID);
+
+			Object wrap = requestEntity.getApiInfo().getOptionValue(Options.WRAP_REQUEST_PARAMETERS.getValue());
+			if (wrap != null && StringUtils.isNotBlank(wrap.toString())) {
+				context.set(wrap.toString(), requestEntity.getParameters());
+			}
+			context.putMapIntoContext(requestEntity.getParameters());
 			// 验证 path
 			doValidate(scriptName, "path", paths, requestEntity.getPathVariables(), PATH_VARIABLE_INVALID);
+			context.putMapIntoContext(requestEntity.getPathVariables());
+			// 设置 cookie 变量
+			context.set(VAR_NAME_COOKIE, new CookieContext(requestEntity.getRequest()));
+			// 验证 header
+			doValidate(scriptName, "header", info.getHeaders(), headers, HEADER_INVALID);
+			// 设置 header 变量
+			context.set(VAR_NAME_HEADER, requestEntity.getHeaders());
+			// 设置 session 变量
+			context.set(VAR_NAME_SESSION, new SessionContext(requestEntity.getRequest().getSession()));
+			// 设置 path 变量
+			context.set(VAR_NAME_PATH_VARIABLE, requestEntity.getPathVariables());
 			BaseDefinition requestBody = info.getRequestBodyDefinition();
-			if (requestBody != null && !CollectionUtils.isEmpty(requestBody.getChildren())) {
-				requestBody.setName(StringUtils.defaultIfBlank(requestBody.getName(), "root"));
-				doValidate(scriptName, VAR_NAME_REQUEST_BODY, Collections.singletonList(requestBody), new HashMap<String, Object>() {{
-					put(requestBody.getName(), bodyValue);
-				}}, BODY_INVALID);
+			if (requestBody != null) {
+				if(!CollectionUtils.isEmpty(requestBody.getChildren())){
+					requestBody.setName(StringUtils.defaultIfBlank(requestBody.getName(), "root"));
+					doValidate(scriptName, VAR_NAME_REQUEST_BODY, Collections.singletonList(requestBody), new HashMap<String, Object>() {{
+						put(requestBody.getName(), bodyValue);
+					}}, BODY_INVALID);
+				}
+				context.set(VAR_NAME_REQUEST_BODY, bodyValue);
 			}
 		} catch (ValidateException e) {
 			return afterCompletion(requestEntity, resultProvider.buildResult(requestEntity, RESPONSE_CODE_INVALID, e.getMessage()));
@@ -362,23 +380,11 @@ public class RequestHandler extends MagicController {
 		} else {
 			context = new MagicScriptContext();
 		}
-		Object wrap = requestEntity.getApiInfo().getOptionValue(Options.WRAP_REQUEST_PARAMETERS.getValue());
-		if (wrap != null && StringUtils.isNotBlank(wrap.toString())) {
-			context.set(wrap.toString(), requestEntity.getParameters());
-		}
 		context.setScriptName(scriptName);
-		context.putMapIntoContext(requestEntity.getParameters());
-		context.putMapIntoContext(requestEntity.getPathVariables());
-		context.set(VAR_NAME_COOKIE, new CookieContext(requestEntity.getRequest()));
-		context.set(VAR_NAME_HEADER, requestEntity.getHeaders());
-		context.set(VAR_NAME_SESSION, new SessionContext(requestEntity.getRequest().getSession()));
-		context.set(VAR_NAME_PATH_VARIABLE, requestEntity.getPathVariables());
-		if (requestBody != null) {
-			context.set(VAR_NAME_REQUEST_BODY, requestBody);
-		}
 		return context;
 	}
 
+
 	/**
 	 * 包装返回结果
 	 */