上手Spring Boot
起因
因公司要重做一个项目,服务由原先.Net WCF改为Java平台下Web Api(Spring Boot).公司的项目一直都是.Net Framework 3.5,这次客户端改为.Net Framework 4.0,为什么不用再高的版本,是因为.Net Framework 4.0可以在Windows Xp上运行,在高的版本Windows Xp就不支持了.所以造成公司大部分项目都是3.5的.还有一部分已经改为Java重做了.Spring Boot 数据压缩
因为原先WCF服务是做了数据压缩的功能,在换为Spring Boot数据压缩还是要保留的,因为这个项目大量图片及pdf文件.Spring Boot还是开箱即用.直接在配置文件中配置一下就可以使用压缩功能,压缩方式是GZIP方式./***
* 测试json是否压缩
* @return
*/
@RequestMapping(value = "/getJson")
public ArrayList<UserInfo> getJson() {
ArrayList<UserInfo> list = new ArrayList<UserInfo>();
for (int i = 0; i < 1000; i++) {
UserInfo info = new UserInfo();
info.setName("tom" + (i + 1));
info.setAge(38);
list.add(info);
}
return list;
}
server.compression.enabled=true
server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain,image/bmp,image/jpeg,image/png,image/tiff,application/pdf
server.compression.min-response-size=2048
压缩之后,getJosn接口返回的数据只有2KB多点,如果没有压缩差不多是26KB多点,压缩后是未压缩的十分之一.
接收文件
/**
* 测试接收文件
* @param file
* @return
* @throws IOException
*/
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public String uploadFile(@RequestParam(value = "file", required = false) MultipartFile file) throws IOException {
if (file.isEmpty()) {
return "failed";
}
//保存路径这样写: e;/blog 这样写就失去了项目的移植性
// e:/blog 只有Windows系统有盘符
// Linux/Unix 是没有盘符概念的
// Windows/Linux/Unix 文件目录符号都应该使用"/"
// 项目中应该使用配置文件或者从数据库中读取,这里这样只是方便
File srcFile = new File("e:/blog/" + file.getOriginalFilename());
file.transferTo(srcFile);
return "ok";
}
使用c# 进行Post提交文件.因为新项目客户端是用WinForm来做.这里使用HttpClient.
using (HttpClient client = new HttpClient())
{
var content = new MultipartFormDataContent();
string path = Path.Combine(Environment.CurrentDirectory, "vs2019-cpu.png");
content.Add(new ByteArrayContent(File.ReadAllBytes(path)), "file", "vs2019-cpu.png");
var requestUri = "http://127.0.0.1:8080/uploadFile";
var result = client.PostAsync(requestUri, content).Result.Content.ReadAsStringAsync().Result;
Console.WriteLine(result);
}
秋风
2020-01-01