Commit 18a5c48b authored by 黎博's avatar 黎博

新增解析curl接口

parent ab8057d2
......@@ -4,15 +4,19 @@ import cn.qg.holmes.common.JsonResult;
import cn.qg.holmes.entity.auto.Interface;
import cn.qg.holmes.service.auto.AutoModuleService;
import cn.qg.holmes.service.auto.InterfaceService;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 接口相关controller
......@@ -106,4 +110,69 @@ public class InterfaceController {
}
return JsonResult.buildSuccessResult(interfaceService.removeById(interfaceId));
}
@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", "");
}
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);
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());
parametersList.add(parameterMap);
}
}
Map<String, Object> map = new HashMap<>();
map.put("headersList", headersList);
map.put("parametersList", parametersList);
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