Commit c49f9179 authored by 黎博's avatar 黎博

新增curl解析接口

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