增加文件上传功能
This commit is contained in:
@@ -52,14 +52,13 @@ public class MgDocumentController {
|
||||
*/
|
||||
@ResponseBody
|
||||
@PostMapping(value = "/resourcesList")
|
||||
public ResponseJson<Set<SwaggerResourcesInfoVo>> resourcesList() {
|
||||
public ResponseJson<List<SwaggerResourcesInfoVo>> resourcesList() {
|
||||
String swaggerResourcesStr = storageService.get(StorageKeys.SWAGGER_RESOURCES_LIST);
|
||||
Set<SwaggerResourcesInfoVo> resourcesSet = new HashSet<>();
|
||||
List<SwaggerResourcesInfoVo> resourcesList = new LinkedList<>();
|
||||
if (StringUtils.isNotBlank(swaggerResourcesStr)) {
|
||||
List<SwaggerResourcesInfoVo> resourcesList = JSON.parseArray(swaggerResourcesStr, SwaggerResourcesInfoVo.class);
|
||||
resourcesSet.addAll(resourcesList);
|
||||
resourcesList = JSON.parseArray(swaggerResourcesStr, SwaggerResourcesInfoVo.class);
|
||||
}
|
||||
return DocResponseJson.ok(resourcesSet);
|
||||
return DocResponseJson.ok(resourcesList);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,60 +1,56 @@
|
||||
package com.zyplayer.doc.swagger.controller;
|
||||
|
||||
import java.net.HttpCookie;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.zyplayer.doc.core.json.DocResponseJson;
|
||||
import com.zyplayer.doc.swagger.controller.param.HttpRequestParam;
|
||||
import com.zyplayer.doc.swagger.controller.vo.HttpCookieVo;
|
||||
import com.zyplayer.doc.swagger.controller.vo.HttpHeaderVo;
|
||||
import com.zyplayer.doc.swagger.controller.vo.HttpRequestVo;
|
||||
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.HttpResponse;
|
||||
|
||||
/**
|
||||
* 后台代理网络请求的控制器
|
||||
*
|
||||
* @author 暮光:城中城
|
||||
* @since 2018年8月21日
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/swagger-mg-ui/http")
|
||||
public class MgHttpRequestController {
|
||||
|
||||
@PostMapping(value = "/request")
|
||||
public DocResponseJson<HttpRequestVo> post(HttpRequestParam param) {
|
||||
HttpRequest request = param.createRequest();
|
||||
HttpResponse response = request.execute();
|
||||
HttpRequestVo httpRequestVo = new HttpRequestVo();
|
||||
httpRequestVo.setData(response.body());
|
||||
httpRequestVo.setStatus(response.getStatus());
|
||||
List<HttpCookie> cookies = response.getCookies();
|
||||
if (cookies != null && cookies.size() > 0) {
|
||||
List<HttpCookieVo> cookie = cookies.stream().map(val -> {
|
||||
return new HttpCookieVo(val.getName(), val.getValue());
|
||||
}).collect(Collectors.toList());
|
||||
httpRequestVo.setCookie(cookie);
|
||||
}
|
||||
Map<String, List<String>> headers = response.headers();
|
||||
if (headers != null && headers.size() > 0) {
|
||||
List<HttpHeaderVo> header = new ArrayList<>(headers.size());
|
||||
for (Entry<String, List<String>> httpHeader : headers.entrySet()) {
|
||||
HttpHeaderVo vo = new HttpHeaderVo();
|
||||
vo.setName(httpHeader.getKey());
|
||||
vo.setValue(String.join(";", httpHeader.getValue()));
|
||||
header.add(vo);
|
||||
}
|
||||
httpRequestVo.setHeader(header);
|
||||
}
|
||||
return DocResponseJson.ok(httpRequestVo);
|
||||
}
|
||||
}
|
||||
package com.zyplayer.doc.swagger.controller;
|
||||
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.HttpResponse;
|
||||
import com.zyplayer.doc.core.json.DocResponseJson;
|
||||
import com.zyplayer.doc.swagger.controller.param.HttpRequestParam;
|
||||
import com.zyplayer.doc.swagger.controller.vo.HttpCookieVo;
|
||||
import com.zyplayer.doc.swagger.controller.vo.HttpHeaderVo;
|
||||
import com.zyplayer.doc.swagger.controller.vo.HttpRequestVo;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.net.HttpCookie;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 后台代理网络请求的控制器
|
||||
*
|
||||
* @author 暮光:城中城
|
||||
* @since 2018年8月21日
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/swagger-mg-ui/http")
|
||||
public class MgHttpRequestController {
|
||||
|
||||
@PostMapping(value = "/request")
|
||||
public DocResponseJson<HttpRequestVo> post(HttpRequestParam param) {
|
||||
HttpRequest request = param.createRequest();
|
||||
HttpResponse response = request.execute();
|
||||
HttpRequestVo httpRequestVo = new HttpRequestVo();
|
||||
httpRequestVo.setData(response.body());
|
||||
httpRequestVo.setStatus(response.getStatus());
|
||||
List<HttpCookie> cookies = response.getCookies();
|
||||
if (cookies != null && cookies.size() > 0) {
|
||||
List<HttpCookieVo> cookie = cookies.stream().map(val -> new HttpCookieVo(val.getName(), val.getValue())).collect(Collectors.toList());
|
||||
httpRequestVo.setCookie(cookie);
|
||||
}
|
||||
Map<String, List<String>> headers = response.headers();
|
||||
if (headers != null && headers.size() > 0) {
|
||||
List<HttpHeaderVo> header = new ArrayList<>(headers.size());
|
||||
for (Entry<String, List<String>> httpHeader : headers.entrySet()) {
|
||||
HttpHeaderVo vo = new HttpHeaderVo();
|
||||
vo.setName(httpHeader.getKey());
|
||||
vo.setValue(String.join(";", httpHeader.getValue()));
|
||||
header.add(vo);
|
||||
}
|
||||
httpRequestVo.setHeader(header);
|
||||
}
|
||||
return DocResponseJson.ok(httpRequestVo);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
package com.zyplayer.doc.swagger.controller.param;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.io.resource.BytesResource;
|
||||
import cn.hutool.core.io.resource.MultiFileResource;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
@@ -10,6 +17,7 @@ import com.alibaba.fastjson.TypeReference;
|
||||
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.Method;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
/**
|
||||
* 请求参数对象
|
||||
@@ -23,6 +31,8 @@ public class HttpRequestParam {
|
||||
private String header;
|
||||
private String form;
|
||||
private String body;
|
||||
private String[] fileNames;
|
||||
private MultipartFile[] files;
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
@@ -84,6 +94,28 @@ public class HttpRequestParam {
|
||||
if (formMap != null) {
|
||||
request.form(formMap);
|
||||
}
|
||||
// 拼文件
|
||||
if (this.getFiles() != null && this.getFiles().length > 0) {
|
||||
Map<String, MultiFileResource> bytesResourceMap = new HashMap<>();
|
||||
for (int i = 0; i < this.getFiles().length; i++) {
|
||||
try {
|
||||
String fileName = this.getFileNames()[i].replace("[", "").replace("]", "");
|
||||
MultipartFile file = this.getFiles()[i];
|
||||
BytesResource bytesResource = new BytesResource(file.getBytes(), file.getOriginalFilename());
|
||||
MultiFileResource multiFileResource = bytesResourceMap.get(fileName);
|
||||
if (multiFileResource == null) {
|
||||
multiFileResource = new MultiFileResource();
|
||||
}
|
||||
multiFileResource.add(bytesResource);
|
||||
bytesResourceMap.put(fileName, multiFileResource);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
for (Map.Entry<String, MultiFileResource> entry : bytesResourceMap.entrySet()) {
|
||||
request.form(entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
if (StringUtils.isNotBlank(body) && request.getMethod() != Method.GET) {
|
||||
request.body(body);
|
||||
}
|
||||
@@ -192,5 +224,20 @@ public class HttpRequestParam {
|
||||
public void setMethod(String method) {
|
||||
this.method = method;
|
||||
}
|
||||
|
||||
|
||||
public MultipartFile[] getFiles() {
|
||||
return files;
|
||||
}
|
||||
|
||||
public void setFiles(MultipartFile[] files) {
|
||||
this.files = files;
|
||||
}
|
||||
|
||||
public String[] getFileNames() {
|
||||
return fileNames;
|
||||
}
|
||||
|
||||
public void setFileNames(String[] fileNames) {
|
||||
this.fileNames = fileNames;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user