關於RestFul接口的文件導入導出的實現

如果一個接口的請求參數或者相應接口的數據內容過大,需要以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();
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章