Commit c49f9179 authored by 黎博's avatar 黎博

新增curl解析接口

parent 18a5c48b
......@@ -111,68 +111,89 @@ public class InterfaceController {
return JsonResult.buildSuccessResult(interfaceService.removeById(interfaceId));
}
/**
* 解析CURL
* @param code curl代码
* @return
*/
@GetMapping("/curl")
public JsonResult resolutionCurl(@RequestParam String code) {
List<Map<String, String>> headersList = new ArrayList<>();
List<Map<String, String>> parametersList = new ArrayList<>();
String headerRegex = "--header '(.*)'";
String parameterDataRegex = "--data-urlencode '(.*)'";
String parameterFormRegex = "--form '(.*)'";
String parameterJsonRegex = "--data-raw '(.*)'";
Pattern headerPattern = Pattern.compile(headerRegex);
Pattern parameterDataPattern = Pattern.compile(parameterDataRegex);
Pattern parameterFormPattern = Pattern.compile(parameterFormRegex);
Pattern parameterJsonPattern = Pattern.compile(parameterJsonRegex);
Matcher headerMatcher = headerPattern.matcher(code);
Matcher parameterDataMatcher = parameterDataPattern.matcher(code);
Matcher parameterFormMatcher = parameterFormPattern.matcher(code);
Matcher parameterJsonMatcher = parameterJsonPattern.matcher(code);
while (headerMatcher.find()) {
Map<String, String> headersMap = new HashMap<>();
String headerItem = headerMatcher.group(1);
String[] tempList = headerItem.split(":");
headersMap.put("paramsName", tempList[0].trim());
headersMap.put("paramsValue", tempList[1].trim());
headersList.add(headersMap);
}
while (parameterDataMatcher.find()) {
Map<String, String> parameterMap = new HashMap<>();
String parameterItem = parameterDataMatcher.group(1);
String[] tempList = parameterItem.split("=");
parameterMap.put("paramsName", tempList[0].trim());
if (tempList.length == 2) {
parameterMap.put("paramsValue", tempList[1].trim());
} else {
parameterMap.put("paramsValue", "");
Map<String, Object> resultMap = new HashMap<>();
if (code.contains("GET")) {
// 处理GET请求
String getParameters = code.split("\\?")[1];
// 去掉末尾的单引号
getParameters = getParameters.substring(0, getParameters.length()-1);
String[] paramPair = getParameters.split("&");
for (String pair: paramPair) {
String[] pairList = pair.split("=");
Map<String, String> map = new HashMap<>();
map.put("paramsName", pairList[0]);
map.put("paramsValue", pairList[1]);
parametersList.add(map);
}
parametersList.add(parameterMap);
}
while (parameterFormMatcher.find()) {
Map<String, String> parameterMap = new HashMap<>();
String parameterItem = parameterFormMatcher.group(1);
String[] tempList = parameterItem.split("=");
parameterMap.put("paramsName", tempList[0].trim());
if (tempList.length == 2) {
parameterMap.put("paramsValue", tempList[1].trim());
} else {
parameterMap.put("paramsValue", "");
} else if (code.contains("POST")) {
// 处理POST请求
String headerRegex = "--header '(.*)'";
String parameterDataRegex = "--data-urlencode '(.*)'";
String parameterFormRegex = "--form '(.*)'";
String parameterJsonRegex = "--data-raw '(.*)'";
Pattern headerPattern = Pattern.compile(headerRegex);
Pattern parameterDataPattern = Pattern.compile(parameterDataRegex);
Pattern parameterFormPattern = Pattern.compile(parameterFormRegex);
Pattern parameterJsonPattern = Pattern.compile(parameterJsonRegex, Pattern.DOTALL);
Matcher headerMatcher = headerPattern.matcher(code);
Matcher parameterDataMatcher = parameterDataPattern.matcher(code);
Matcher parameterFormMatcher = parameterFormPattern.matcher(code);
Matcher parameterJsonMatcher = parameterJsonPattern.matcher(code);
while (headerMatcher.find()) {
Map<String, String> headersMap = new HashMap<>();
String headerItem = headerMatcher.group(1);
String[] tempList = headerItem.split(":");
headersMap.put("paramsName", tempList[0].trim());
headersMap.put("paramsValue", tempList[1].trim());
headersList.add(headersMap);
}
parametersList.add(parameterMap);
}
while (parameterJsonMatcher.find()) {
Map<String, String> parameterMap = new HashMap<>();
String parameterItem = parameterJsonMatcher.group(1);
System.out.println(parameterItem);
Map<String, Object> requestMap = JSON.parseObject(parameterItem, Map.class);
for (Map.Entry<String, Object> entry: requestMap.entrySet()) {
parameterMap.put("paramsName", entry.getKey());
parameterMap.put("paramsValue", entry.getValue().toString());
while (parameterDataMatcher.find()) {
Map<String, String> parameterMap = new HashMap<>();
String parameterItem = parameterDataMatcher.group(1);
String[] tempList = parameterItem.split("=");
parameterMap.put("paramsName", tempList[0].trim());
if (tempList.length == 2) {
parameterMap.put("paramsValue", tempList[1].trim());
} else {
parameterMap.put("paramsValue", "");
}
parametersList.add(parameterMap);
}
while (parameterFormMatcher.find()) {
Map<String, String> parameterMap = new HashMap<>();
String parameterItem = parameterFormMatcher.group(1);
String[] tempList = parameterItem.split("=");
parameterMap.put("paramsName", tempList[0].trim());
if (tempList.length == 2) {
parameterMap.put("paramsValue", tempList[1].trim());
} else {
parameterMap.put("paramsValue", "");
}
parametersList.add(parameterMap);
}
while (parameterJsonMatcher.find()) {
Map<String, String> parameterMap = new HashMap<>();
String parameterItem = parameterJsonMatcher.group(1);
Map<String, Object> requestMap = JSON.parseObject(parameterItem, Map.class);
for (Map.Entry<String, Object> entry: requestMap.entrySet()) {
parameterMap.put("paramsName", entry.getKey());
parameterMap.put("paramsValue", entry.getValue().toString());
parametersList.add(parameterMap);
}
}
}
Map<String, Object> map = new HashMap<>();
map.put("headersList", headersList);
map.put("parametersList", parametersList);
return JsonResult.buildSuccessResult(map);
resultMap.put("headersList", headersList);
resultMap.put("parametersList", parametersList);
return JsonResult.buildSuccessResult(resultMap);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment