2017-08-17 131 views
1

我正在寫一個spring rest方法來從數據庫中獲取詳細信息,並將其設置爲響應POJO,然後將其返回。目前我需要使用CSV來生成此響應,而不是默認的json,當使用POSTMAN或RC命中URL時,就像可下載的帶有數據的CSV文件一樣。我搜索了很多網站,但不確定少數邏輯。GetMapping使用Spring Boot生成CSV文件

  1. 我們是否需要編寫業務邏輯來將pojo類的值轉換爲csv格式還是spring有任何轉換機制?
  2. Produces =「text/csv」在很多地方被提及,這是否正確地轉換響應?

目前我還沒有爲CSV轉換編寫任何代碼。

@GetMapping("/batch/export" , produces="text/csv") 
public ResponseEntity<ApplicationResponse> getBatchDetails(
     HttpServletRequest request) { 

    ApplicationRequest appRequest = ApplicationServiceMapper.mapRequestFromHttpRequest(request); 
    ApplicationResponse response = appService.getDBDetails(appRequest); 
    return new ResponseEntity<>(response, HttpStatus.OK); 

} 

這裏的回答是,在其POJO格式的所有數據,如果我們不給服務回報標註生產則默認情況下春天將返回響應JSON的一個。有人可以指導我嗎?提前致謝。

+0

[如何在瀏覽器中從Spring控制器中返回CSV數據]可能的副本(https://stackoverflow.com/questions/22947751/how-to-return-csv-data-in-browser-from-spring-controller ) –

+0

Spring Boot使用Spring WebMVC並且Spring WebMVC具有[內置支持](https://docs.spring.io/spring/docs/current/spring-framework-reference/html/view.html#view -jasper-reports)通過JasperReports發送CSV文件。另外,可以使用任何流行的CSV處理庫自定義'MessageConverter' [可以構建](https://stackoverflow.com/a/44094437/1126526)。 – manish

+0

嘿,這個:https://stackoverflow.com/a/45729709/1942642回答你的問題? –

回答

1

只使用@GetMappingproduces="text/csv"是不夠的。它只負責設置響應標題Content-Type: text/csv

你需要的響應添加爲參數HttpServletResponse response,將您POJO爲有效csv文件,也只有這樣,寫csv文件到HttpServletResponse

+0

這有點回答了我的問題,但我所做的是使用OpenCSV api完成了它。 – user2632905