成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SpringBoot請求參數還可以這樣玩?很少有人知道?

開發 前端
對于application/json類型的數據,客戶端通常會將請求的內容以JSON格式添加到HTTP請求的body中,并設置請求的Content-Type為application/json。在SpringBoot后端,當處理這種類型的數據時,我們只需在控制器方法的相應參數上使用@RequestBody注解,SpringBoot便會自動將請求體中的JSON數據轉換成Java對象(如DTO、VO等)。

環境:Spring2.7.18

1. 簡介

在Web開發中,請求參數處理是核心功能之一。SpringBoot提供了靈活且強大的參數綁定機制,能夠自動將HTTP請求中的參數(如查詢參數、路徑變量、表單數據、JSON等)映射到控制器方法的參數上。無論是簡單類型、復雜對象還是集合類型,SpringBoot都能通過注解(如@RequestParam、@PathVariable、@RequestBody等)實現無縫對接,極大地提升了開發效率與應用的健壯性。此外,它還支持數據校驗、自定義參數解析器等高級特性,滿足各種復雜的業務需求。對于表單數據,當設置Content-Type為multipart/form-data時,我們確實可以方便地實現文件的上傳以及普通文本字段的提交。然而,在某些復雜場景中,我們可能希望除了上傳文件外,還能將其他字段以非普通文本類型(如application/json、application/xml等)提交,這種場景又該如何實現呢?

對于application/json類型的數據,客戶端通常會將請求的內容以JSON格式添加到HTTP請求的body中,并設置請求的Content-Type為application/json。在SpringBoot后端,當處理這種類型的數據時,我們只需在控制器方法的相應參數上使用@RequestBody注解,SpringBoot便會自動將請求體中的JSON數據轉換成Java對象(如DTO、VO等)。

接下來我詳細的介紹對于這種復雜的應用場景在SpringBoot中是如何進行處理的,這需要前后端配合。

2. 實戰案例

既然要包含json對象,又要包含附近,所以這里我們需要結合@RequestPart注解,用該注解分別來指定要獲取請求中哪部分內容,而Spring MVC底層會更加你的類型進行自動的轉換。

2.1 基本操作

接口定義

@PostMapping("/requestpart")
public Object requestpart(
    @RequestPart("user") User user, 
    @RequestPart("file") MultipartFile file
  ) throws Exception {
  // TODO
  file.transferTo(new File("f://m.png")) ;
  return user ;
}

這里每個參數都通過@RequestPart來指定分別獲取請求中的哪部分內容。接口定義完后,接下來看前端要如何處理

前端請求處理

前端我們需要借助FormData來添加每一項表單數據,同時還需要為每一項指明你的數據類型,如下示例:

let form = new FormData()
// 文件附件
form.append('file', document.querySelector('#file').files[0])
let data = {age: 5000, name: '中國????'}
// 通過Blob來構建一個不可變、原始數據的類文件對象,同時指明你數據類型
let user = new Blob([JSON.stringify(data)], { type: 'application/json' })
form.append('user', user)
axios({
  method: 'post',
  url: 'http://localhost:8080/api/request/requestpart',
  // 設置請求header,這里設置multipart/mixed也可以
  headers: {
    'Content-Type': 'multipart/form-data'
  },
  data: form
})

粗糙的前端頁面

圖片圖片

后端接口成功的接收了json數據,再看看請求長什么樣。

圖片圖片

通過請求Payload知道,每個請求部分都有自己的Content-Type。在后端接口會根據每個Content-Type進行數據類型的轉換。

2.2 更多請求類型

你還可以指定更多的類型。

public Object requestpart(
    @RequestPart("user") User user, 
    @RequestPart("xml") String xml, 
    @RequestPart("file") MultipartFile file)

前端通過通過Blob對象來指定數據類型。

let form = new FormData()
// other
// 制定類型為xml
let xml = new Blob(['<message><title>@RequestPart請求參數處理</title></message>'], {type: 'application/xml'})
form.append('xml', xml)

請求情況。

圖片圖片

如果你還有其它類型,可以任意的指定,只要后端有對應的參數解析器即可(后端如何轉換類型會根據你請求的情況比如:根據Content-Type)。

2.3 參數校驗

與@RequestBody請求參數一樣,這里的@RequestPart也可以使用基于注解的方式進行參數的校驗,如下示例:

@PostMapping("/requestpart")
public Object requestpart(
    @Validated @RequestPart("user") User user,
    BindingResult result,
    @RequestPart(name = "xml", required = false) String xml, 
    @RequestPart("file") MultipartFile file
  ) throws Exception {
  // TODO
  if (result.hasErrors()) {
    return result.toString() ;
  }
  return user ;
}
// User實體對象
public static class User {
  private Integer age ;
  @NotEmpty
  private String name ;
  // Getters, Setters
}

前端輸出結果;

圖片圖片

注意:請求錯誤對象的位置,否則將在后端控制臺拋出異常,當然如果你有全局異常處理也就無所謂了。

責任編輯:武曉燕 來源: Spring全家桶實戰案例源碼
相關推薦

2024-06-13 08:19:08

Controller接口參數

2019-01-29 10:00:59

GitHub開源搜索

2024-05-17 09:37:26

format屬性Spring

2021-03-03 08:05:53

C++項目函數

2022-12-06 17:30:04

2022-07-30 23:45:09

內存泄漏檢測工具工具

2016-09-29 17:48:32

騰訊云語音質檢珍愛網

2019-10-30 12:24:57

網絡安全安全風險網絡攻擊

2021-02-01 13:35:28

微信Python技巧

2022-09-26 07:32:24

開發接口編程

2022-08-21 14:00:11

消息中間件MQ

2022-05-17 07:26:33

動畫CSS前端

2023-07-03 16:49:47

5G

2021-02-04 13:32:55

jsp技術servlet

2013-09-18 10:44:01

搜狗輸入法詞語

2012-10-12 10:13:26

eclips代碼編寫Editplus

2017-11-27 12:24:02

命令行代碼指令

2013-08-22 10:28:50

.NET MVC.NETRazor

2020-08-24 07:19:13

主鍵自增數據庫

2020-07-09 08:37:13

ES6
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 97人人澡人人爽91综合色 | 欧美高清视频一区 | 精品福利一区二区三区 | 午夜成人在线视频 | 免费xxxx大片国产在线 | 日本不卡免费新一二三区 | 亚洲第一色av | 亚洲精品中文字幕中文字幕 | 亚洲一一在线 | 成人精品一区二区 | 日韩欧美成人精品 | 久久9视频| 久久久九九 | 国产欧美日韩二区 | 欧美一区二区三 | 97精品国产97久久久久久免费 | 国产视频h | 久久综合九九 | 天堂网中文字幕在线观看 | www.av在线 | 色播99 | 一区二区三区四区av | 北条麻妃99精品青青久久主播 | 国产高清在线精品 | 99reav | 欧美区在线| 81精品国产乱码久久久久久 | 国产精品一区二区三区久久 | 欧美国产视频 | 九九精品在线 | 久久午夜电影 | 久草网在线视频 | 久久这里只有精品首页 | 在线欧美一区 | 日本免费小视频 | 精品一区av | 日本精品一区二区三区在线观看视频 | 欧美黑人一区二区三区 | 一级黄色短片 | 亚洲精品在线观看网站 | 毛色毛片免费看 |