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 lombok.Data;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@@ -126,7 +127,7 @@ public class AlipayController {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@ApiOperation(value="获取分类信息", notes = "演示表格树")
|
@ApiOperation(value="获取分类信息", notes = "演示表格树")
|
||||||
@ApiMapping(value = "alipay.category.get")
|
@ApiMapping(value = "alipay.category.get", method = RequestMethod.POST)
|
||||||
public Category getCategory(Category story) {
|
public Category getCategory(Category story) {
|
||||||
StoryVO storyVO = new StoryVO();
|
StoryVO storyVO = new StoryVO();
|
||||||
storyVO.id = 1L;
|
storyVO.id = 1L;
|
||||||
|
@@ -101,10 +101,11 @@ function doTest() {
|
|||||||
var method = currentItem.name;
|
var method = currentItem.name;
|
||||||
var version = currentItem.version;
|
var version = currentItem.version;
|
||||||
var data = {
|
var data = {
|
||||||
appId: $('#appId').val(),
|
appId: $('#appId').val()
|
||||||
privateKey: $('#privateKey').val(),
|
, privateKey: $('#privateKey').val()
|
||||||
method: method,
|
, method: method
|
||||||
version: version
|
, version: version
|
||||||
|
, httpMethod: currentItem.httpMethod
|
||||||
};
|
};
|
||||||
var uploadFileObjects = getUploadFileObjects();
|
var uploadFileObjects = getUploadFileObjects();
|
||||||
var $inputs = $body.find('.test-input');
|
var $inputs = $body.find('.test-input');
|
||||||
|
@@ -16,6 +16,7 @@ public class DocItem {
|
|||||||
private String description;
|
private String description;
|
||||||
// 是否多文件上传
|
// 是否多文件上传
|
||||||
private boolean multiple;
|
private boolean multiple;
|
||||||
|
private String httpMethod;
|
||||||
|
|
||||||
List<DocParameter> requestParameters;
|
List<DocParameter> requestParameters;
|
||||||
List<DocParameter> responseParameters;
|
List<DocParameter> responseParameters;
|
||||||
|
@@ -46,6 +46,7 @@ public class HttpTool {
|
|||||||
public void saveFromResponse(HttpUrl httpUrl, List<Cookie> list) {
|
public void saveFromResponse(HttpUrl httpUrl, List<Cookie> list) {
|
||||||
cookieStore.put(httpUrl.host(), list);
|
cookieStore.put(httpUrl.host(), list);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Cookie> loadForRequest(HttpUrl httpUrl) {
|
public List<Cookie> loadForRequest(HttpUrl httpUrl) {
|
||||||
List<Cookie> cookies = cookieStore.get(httpUrl.host());
|
List<Cookie> cookies = cookieStore.get(httpUrl.host());
|
||||||
return cookies != null ? cookies : new ArrayList<Cookie>();
|
return cookies != null ? cookies : new ArrayList<Cookie>();
|
||||||
@@ -55,11 +56,17 @@ public class HttpTool {
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
public static class HttpToolConfig {
|
public static class HttpToolConfig {
|
||||||
/** 请求超时时间 */
|
/**
|
||||||
|
* 请求超时时间
|
||||||
|
*/
|
||||||
private int connectTimeoutSeconds = 10;
|
private int connectTimeoutSeconds = 10;
|
||||||
/** http读取超时时间 */
|
/**
|
||||||
|
* http读取超时时间
|
||||||
|
*/
|
||||||
private int readTimeoutSeconds = 10;
|
private int readTimeoutSeconds = 10;
|
||||||
/** http写超时时间 */
|
/**
|
||||||
|
* http写超时时间
|
||||||
|
*/
|
||||||
private int writeTimeoutSeconds = 10;
|
private int writeTimeoutSeconds = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,33 +91,15 @@ public class HttpTool {
|
|||||||
/**
|
/**
|
||||||
* 提交表单
|
* 提交表单
|
||||||
*
|
*
|
||||||
* @param url url
|
* @param url url
|
||||||
* @param form 参数
|
* @param form 参数
|
||||||
* @param header header
|
* @param header header
|
||||||
* @param method 请求方式,post,get等
|
* @param method 请求方式,post,get等
|
||||||
* @return
|
* @return
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
public String request(String url, Map<String, String> form, Map<String, String> header, String method) throws IOException {
|
public String request(String url, Map<String, String> form, Map<String, String> header, String method) throws IOException {
|
||||||
Request.Builder requestBuilder;
|
Request.Builder requestBuilder = buildRequestBuilder(url, form, method);
|
||||||
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);
|
|
||||||
}
|
|
||||||
// 添加header
|
// 添加header
|
||||||
addHeader(requestBuilder, 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 method
|
||||||
, @RequestParam String version
|
, @RequestParam String version
|
||||||
, @RequestParam String bizContent
|
, @RequestParam String bizContent
|
||||||
|
, @RequestParam(defaultValue = "get") String httpMethod
|
||||||
, HttpServletRequest request) throws AlipayApiException {
|
, HttpServletRequest request) throws AlipayApiException {
|
||||||
|
|
||||||
Assert.isTrue(StringUtils.isNotBlank(appId), "AppId不能为空");
|
Assert.isTrue(StringUtils.isNotBlank(appId), "AppId不能为空");
|
||||||
@@ -112,7 +113,7 @@ public class SandboxController {
|
|||||||
if (!CollectionUtils.isEmpty(files)) {
|
if (!CollectionUtils.isEmpty(files)) {
|
||||||
responseData = httpTool.requestFile(url, params, Collections.emptyMap(), files);
|
responseData = httpTool.requestFile(url, params, Collections.emptyMap(), files);
|
||||||
} else {
|
} else {
|
||||||
responseData = httpTool.request(url, params, Collections.emptyMap(), "get");
|
responseData = httpTool.request(url, params, Collections.emptyMap(), httpMethod);
|
||||||
}
|
}
|
||||||
result.apiResult = responseData;
|
result.apiResult = responseData;
|
||||||
return result;
|
return result;
|
||||||
|
@@ -30,14 +30,16 @@ public class SwaggerDocParser implements DocParser {
|
|||||||
|
|
||||||
JSONObject paths = docRoot.getJSONObject("paths");
|
JSONObject paths = docRoot.getJSONObject("paths");
|
||||||
Set<String> pathNameSet = paths.keySet();
|
Set<String> pathNameSet = paths.keySet();
|
||||||
for (String pathName : pathNameSet) {
|
for (String apiPath : pathNameSet) {
|
||||||
JSONObject pathInfo = paths.getJSONObject(pathName);
|
JSONObject pathInfo = paths.getJSONObject(apiPath);
|
||||||
|
// key: get,post,head...
|
||||||
Set<String> pathSet = pathInfo.keySet();
|
Set<String> pathSet = pathInfo.keySet();
|
||||||
Optional<String> first = pathSet.stream().findFirst();
|
Optional<String> first = pathSet.stream().findFirst();
|
||||||
if (first.isPresent()) {
|
if (first.isPresent()) {
|
||||||
String path = first.get();
|
String method = first.get();
|
||||||
JSONObject docInfo = pathInfo.getJSONObject(path);
|
JSONObject docInfo = pathInfo.getJSONObject(method);
|
||||||
DocItem docItem = buildDocItem(docInfo, docRoot);
|
DocItem docItem = buildDocItem(docInfo, docRoot);
|
||||||
|
docItem.setHttpMethod(method);
|
||||||
docItems.add(docItem);
|
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