如果一個接口的請求參數或者相應接口的數據內容過大,需要以json文件的形式來進行交互,可以通過以下方式進行編碼實現
導入json類型的文件
/**
* 流程導入json數據接口
*/
@PostMapping("/deployProd/import")
@Timed
@ApiOperation(value="流程導入json數據接口", notes="流程導入json數據接口")
public HttpEntity<DeployProdF07RespM01> importProcess(HttpServletRequest request) throws Exception {
// 從url?processClassificationId=xxx 中獲取其他的參數信息
String processClassificationId = (String)request.getParameter("processClassificationId");
MultipartHttpServletRequest multipartHttpServletRequest = null;
try {
multipartHttpServletRequest = (MultipartHttpServletRequest)request;
} catch (Exception e) {
throw new BizLogicException(new I18nMessage("CommonObjectImportUploadMSG02"));
}
// 傳的文件
MultipartFile file = multipartHttpServletRequest.getFile("file");
DeployProdF07ReqtM01 deployProdF07ReqtM01 = new DeployProdF07ReqtM01();
if (file != null) {
String processStr = new String(file.getBytes(), "UTF-8");
deployProdF07ReqtM01 = objectMapper.convertValue(objectMapper.readTree(processStr ), DeployProdF07ReqtM01.class);
deployProdF07ReqtM01.setProcessClassificationId(processClassificationId);
}
DeployProdF07RespM01 result = deployProdF07BLogic.execute(deployProdF07ReqtM01);
return new ResponseEntity<DeployProdF07RespM01>(result, HttpStatus.OK);
}
導出json類型的文件
/**
* 流程導出json數據接口
*/
@PostMapping("/deployProd/export")
@Timed
@ApiOperation(value="流程導出json數據接口", notes="流程導出json數據接口")
public void exportProcess(@ApiParam @RequestBody @Validated DeployProdF06ReqtM01 deployProdF06ReqtM01, HttpServletResponse response) throws Exception {
log.info("流程導出json數據接口: {}", deployProdF06ReqtM01);
DeployProdF06RespM01 result = deployProdF06BLogic.execute(deployProdF06ReqtM01);
OutputStream out = null;
try {
out = response.getOutputStream();
byte[] data = objectMapper.writeValueAsBytes(result);
response.reset();
response.setHeader("Content-Disposition","attachment;fileName=" + "processData.json");
response.addHeader("Content-Length", data.length + "");
response.setContentType("application/octet-stream;charset=UTF-8");
IOUtils.write(data, out);
} catch (Exception e) {
log.error(MessageFormat.format("下載文件出現的異常:", e.getMessage()), e);
} finally {
out.flush();
out.close();
}
}