日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring MVC – HTTP消息转换器

發布時間:2023/12/3 javascript 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring MVC – HTTP消息转换器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通常,您需要為用戶提供相同的數據,但格式不同,例如JSON,PDF,XLS等。如果您的應用程序是基于Spring Framework的,則可以使用HTTP消息轉換器來完成此任務。

需要將HTTP請求(或其部分)轉換為處理程序方法參數所需的類型(請參閱: 處理程序方法–方法參數 ) ,或者需要以某種方式轉換處理程序方法返回的值以創建HTTP響應時,將應用HTTP消息轉換器。 (請參閱: 處理程序方法-返回值 )。

例如,Spring Framework為您提供了一組預定義的HTTP消息轉換器。 用于字節數組,JSON等。–可以修改或擴展此集合以滿足您的需求。

在本文中,我們將重點介紹如何使用我提供的示例將處理程序方法返回的值轉換為所需的形式(請參見下面的源代碼存儲庫鏈接)。

假設我們有一個控制器返回一些Team數據,像這樣(是的,我知道,我已經忽略了Team ID)

@RestController public class TeamDetailsController { @GetMapping ( "/teams/{teamId}/" ) public Team read() { final Set<TeamMember> members = new LinkedHashSet<>(); members.add( new TeamMember( "Albert Einstein" , LocalDate.of( 1879 , 3 , 14 ))); members.add( new TeamMember( "Benjamin Franklin" , LocalDate.of( 1706 , 1 , 17 ))); members.add( new TeamMember( "Isaac Newton" , LocalDate.of( 1643 , 1 , 4 ))); return new Team(members); } }

在我們的示例中,默認情況下,處理程序方法響應將轉換為JSON:

{ "members" : [ { "dateOfBirth" : "1879-03-14" , "name" : "Albert Einstein" }, { "dateOfBirth" : "1706-01-17" , "name" : "Benjamin Franklin" }, { "dateOfBirth" : "1643-01-04" , "name" : "Isaac Newton" } ] }

如果我們想將處理程序返回的數據轉換為XLS文件,我們可以簡單地將一個bean定義為HTTP消息轉換器實現,將通過HTTP Accept標頭將其激活:

@Service public class TeamToXlsConverter extends AbstractHttpMessageConverter<Team> { private static final MediaType EXCEL_TYPE = MediaType.valueOf( "application/vnd.ms-excel" ); TeamToXlsConverter() { super (EXCEL_TYPE); } @Override protected Team readInternal( final Class<? extends Team> clazz, final HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { return null ; } @Override protected boolean supports( final Class<?> clazz) { return (Team. class == clazz); } @Override protected void writeInternal( final Team team, final HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { try ( final Workbook workbook = new HSSFWorkbook()) { final Sheet sheet = workbook.createSheet(); int rowNo = 0 ; for ( final TeamMember member : team.getMembers()) { final Row row = sheet.createRow(rowNo++); row.createCell( 0 ) .setCellValue(member.getName()); } workbook.write(outputMessage.getBody()); } } }

您必須記住,在我們的示例中,當處理程序方法返回類型為Team的值(請參見supports方法)且HTTP Accept標頭匹配“ application / vnd.ms-excel”時,將始終應用定義的HTTP消息轉換器。 在這種情況下,將返回HTTP消息轉換器生成的XLS文件,而不是Team的JSON表示形式。

甜點的幾個鏈接:

  • GitHub儲存庫

翻譯自: https://www.javacodegeeks.com/2019/10/spring-mvc-http-message-converter.html

總結

以上是生活随笔為你收集整理的Spring MVC – HTTP消息转换器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。