mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-08-11 21:57:56 +08:00
沙箱环境优化
This commit is contained in:
@@ -10,6 +10,7 @@ import io.swagger.annotations.ApiOperation;
|
||||
import lombok.Data;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
@@ -126,7 +127,7 @@ public class AlipayController {
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value="获取分类信息", notes = "演示表格树")
|
||||
@ApiMapping(value = "alipay.category.get")
|
||||
@ApiMapping(value = "alipay.category.get", method = RequestMethod.POST)
|
||||
public Category getCategory(Category story) {
|
||||
StoryVO storyVO = new StoryVO();
|
||||
storyVO.id = 1L;
|
||||
|
@@ -101,10 +101,11 @@ function doTest() {
|
||||
var method = currentItem.name;
|
||||
var version = currentItem.version;
|
||||
var data = {
|
||||
appId: $('#appId').val(),
|
||||
privateKey: $('#privateKey').val(),
|
||||
method: method,
|
||||
version: version
|
||||
appId: $('#appId').val()
|
||||
, privateKey: $('#privateKey').val()
|
||||
, method: method
|
||||
, version: version
|
||||
, httpMethod: currentItem.httpMethod
|
||||
};
|
||||
var uploadFileObjects = getUploadFileObjects();
|
||||
var $inputs = $body.find('.test-input');
|
||||
|
@@ -16,6 +16,7 @@ public class DocItem {
|
||||
private String description;
|
||||
// 是否多文件上传
|
||||
private boolean multiple;
|
||||
private String httpMethod;
|
||||
|
||||
List<DocParameter> requestParameters;
|
||||
List<DocParameter> responseParameters;
|
||||
|
@@ -46,6 +46,7 @@ public class HttpTool {
|
||||
public void saveFromResponse(HttpUrl httpUrl, List<Cookie> list) {
|
||||
cookieStore.put(httpUrl.host(), list);
|
||||
}
|
||||
|
||||
public List<Cookie> loadForRequest(HttpUrl httpUrl) {
|
||||
List<Cookie> cookies = cookieStore.get(httpUrl.host());
|
||||
return cookies != null ? cookies : new ArrayList<Cookie>();
|
||||
@@ -55,11 +56,17 @@ public class HttpTool {
|
||||
|
||||
@Data
|
||||
public static class HttpToolConfig {
|
||||
/** 请求超时时间 */
|
||||
/**
|
||||
* 请求超时时间
|
||||
*/
|
||||
private int connectTimeoutSeconds = 10;
|
||||
/** http读取超时时间 */
|
||||
/**
|
||||
* http读取超时时间
|
||||
*/
|
||||
private int readTimeoutSeconds = 10;
|
||||
/** http写超时时间 */
|
||||
/**
|
||||
* http写超时时间
|
||||
*/
|
||||
private int writeTimeoutSeconds = 10;
|
||||
}
|
||||
|
||||
@@ -84,33 +91,15 @@ public class HttpTool {
|
||||
/**
|
||||
* 提交表单
|
||||
*
|
||||
* @param url url
|
||||
* @param form 参数
|
||||
* @param url url
|
||||
* @param form 参数
|
||||
* @param header header
|
||||
* @param method 请求方式,post,get等
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
public String request(String url, Map<String, String> form, Map<String, String> header, String method) throws IOException {
|
||||
Request.Builder requestBuilder;
|
||||
if (METHOD_GET.equalsIgnoreCase(method)) {
|
||||
HttpUrl.Builder urlBuilder = HttpUrl.parse(url).newBuilder();
|
||||
for (Map.Entry<String, String> entry : form.entrySet()) {
|
||||
urlBuilder.addQueryParameter(entry.getKey(), entry.getValue());
|
||||
}
|
||||
requestBuilder = new Request.Builder()
|
||||
.url(urlBuilder.build())
|
||||
.get();
|
||||
} else {
|
||||
FormBody.Builder paramBuilder = new FormBody.Builder(StandardCharsets.UTF_8);
|
||||
for (Map.Entry<String, String> entry : form.entrySet()) {
|
||||
paramBuilder.add(entry.getKey(), entry.getValue());
|
||||
}
|
||||
FormBody formBody = paramBuilder.build();
|
||||
requestBuilder = new Request.Builder()
|
||||
.url(url)
|
||||
.method(method, formBody);
|
||||
}
|
||||
Request.Builder requestBuilder = buildRequestBuilder(url, form, method);
|
||||
// 添加header
|
||||
addHeader(requestBuilder, header);
|
||||
|
||||
@@ -125,6 +114,47 @@ public class HttpTool {
|
||||
}
|
||||
}
|
||||
|
||||
public static Request.Builder buildRequestBuilder(String url, Map<String, String> form, String method) {
|
||||
switch (method) {
|
||||
case "get":
|
||||
return new Request.Builder()
|
||||
.url(buildHttpUrl(url, form))
|
||||
.get();
|
||||
case "head":
|
||||
return new Request.Builder()
|
||||
.url(buildHttpUrl(url, form))
|
||||
.head();
|
||||
case "put":
|
||||
return new Request.Builder()
|
||||
.url(url)
|
||||
.put(buildFormBody(form));
|
||||
case "delete":
|
||||
return new Request.Builder()
|
||||
.url(url)
|
||||
.delete(buildFormBody(form));
|
||||
default:
|
||||
return new Request.Builder()
|
||||
.url(url)
|
||||
.post(buildFormBody(form));
|
||||
}
|
||||
}
|
||||
|
||||
public static HttpUrl buildHttpUrl(String url, Map<String, String> form) {
|
||||
HttpUrl.Builder urlBuilder = HttpUrl.parse(url).newBuilder();
|
||||
for (Map.Entry<String, String> entry : form.entrySet()) {
|
||||
urlBuilder.addQueryParameter(entry.getKey(), entry.getValue());
|
||||
}
|
||||
return urlBuilder.build();
|
||||
}
|
||||
|
||||
public static FormBody buildFormBody(Map<String, String> form) {
|
||||
FormBody.Builder paramBuilder = new FormBody.Builder(StandardCharsets.UTF_8);
|
||||
for (Map.Entry<String, String> entry : form.entrySet()) {
|
||||
paramBuilder.add(entry.getKey(), entry.getValue());
|
||||
}
|
||||
return paramBuilder.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交表单,并且上传文件
|
||||
*
|
||||
|
@@ -58,6 +58,7 @@ public class SandboxController {
|
||||
, @RequestParam String method
|
||||
, @RequestParam String version
|
||||
, @RequestParam String bizContent
|
||||
, @RequestParam(defaultValue = "get") String httpMethod
|
||||
, HttpServletRequest request) throws AlipayApiException {
|
||||
|
||||
Assert.isTrue(StringUtils.isNotBlank(appId), "AppId不能为空");
|
||||
@@ -112,7 +113,7 @@ public class SandboxController {
|
||||
if (!CollectionUtils.isEmpty(files)) {
|
||||
responseData = httpTool.requestFile(url, params, Collections.emptyMap(), files);
|
||||
} else {
|
||||
responseData = httpTool.request(url, params, Collections.emptyMap(), "get");
|
||||
responseData = httpTool.request(url, params, Collections.emptyMap(), httpMethod);
|
||||
}
|
||||
result.apiResult = responseData;
|
||||
return result;
|
||||
|
@@ -30,14 +30,16 @@ public class SwaggerDocParser implements DocParser {
|
||||
|
||||
JSONObject paths = docRoot.getJSONObject("paths");
|
||||
Set<String> pathNameSet = paths.keySet();
|
||||
for (String pathName : pathNameSet) {
|
||||
JSONObject pathInfo = paths.getJSONObject(pathName);
|
||||
for (String apiPath : pathNameSet) {
|
||||
JSONObject pathInfo = paths.getJSONObject(apiPath);
|
||||
// key: get,post,head...
|
||||
Set<String> pathSet = pathInfo.keySet();
|
||||
Optional<String> first = pathSet.stream().findFirst();
|
||||
if (first.isPresent()) {
|
||||
String path = first.get();
|
||||
JSONObject docInfo = pathInfo.getJSONObject(path);
|
||||
String method = first.get();
|
||||
JSONObject docInfo = pathInfo.getJSONObject(method);
|
||||
DocItem docItem = buildDocItem(docInfo, docRoot);
|
||||
docItem.setHttpMethod(method);
|
||||
docItems.add(docItem);
|
||||
}
|
||||
}
|
||||
|
1947
sop-website/website-server/src/main/resources/api.json
Normal file
1947
sop-website/website-server/src/main/resources/api.json
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user