国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot處理form-data表單接收對(duì)象數(shù)組

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot處理form-data表單接收對(duì)象數(shù)組。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

主要是為了存檔,碰到表單傳對(duì)象數(shù)組的情況,一般都是一個(gè)表單只能傳一個(gè)對(duì)象,后面經(jīng)過(guò)跟前端的研究和討論發(fā)現(xiàn)居然可以傳對(duì)象數(shù)組,以此作為記錄分享。

@Data
public class SealLocationInfoRequest  implements Serializable {
    private static final long serialVersionUID = 2392716281569231777L;
    private Long contractId;
    private Long serverId;
    private String filePath;
    private List<SealLocationInfo> sealLocationInfoList;
 
}
@Data
public class SealLocationInfo  implements Serializable {
    private static final long serialVersionUID = -8706741125508276806L;
    private Integer posType;//定位或關(guān)鍵字
    private float posX;
    private float posY;
    private String signOnPage;
    private Long sealId;
    private String key;
    private float width;
    private Integer signType;//2.騎縫章  1.其他

}

測(cè)試直接使用下標(biāo)方式請(qǐng)求

直接使用屬性下標(biāo)的方式傳遞

請(qǐng)求:

springboot接收數(shù)組對(duì)象,spring boot,后端,java

示例代碼:

@PostMapping(value = "/upload/multiple")
public ResponseEntity<ResponseResult<List<Object>>> uploadMultiple1213Batch(
    MultipartFile pdfFile,
    //            @ModelAttribute("request")
    List<SealLocationInfoRequest> request) throws Exception {
    //            @RequestParam("hosts") SealLocationInfoRequest hosts) throws Exception {
    //            @ModelAttribute("hosts") SealLocationInfoRequest hosts) throws Exception {
    return OpsResponse.ok(null);
}

結(jié)果:

java.lang.IllegalStateException: No primary or single unique constructor found for interface java.util.List

結(jié)果明顯不適配報(bào)錯(cuò)

測(cè)試二使用對(duì)象包裹的方式傳輸

    @PostMapping(value = "/upload/multiple")
    public ResponseEntity<ResponseResult<List<Object>>> uploadMultiple1213Batch(
            MultipartFile pdfFile,
//            @ModelAttribute("request")
//            List<SealLocationInfoRequest> request) throws Exception {
//            @RequestParam("hosts") SealLocationInfoRequest hosts) throws Exception {
             SealLocationInfoRequest hosts) throws Exception {
        return OpsResponse.ok(null);
    }

請(qǐng)求體

springboot接收數(shù)組對(duì)象,spring boot,后端,java

curl的方式

curl --location 'http://localhost:8088/upload/record/upload/multiple' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: */*' \
--header 'Authorization: acf179d575a7492fbbf5deefbdc69fbd' \
--header 'from-service: trade-gateway' \
--header 'gateway_header: 2131321' \
--header 'traceId: 12312' \
--form 'sealLocationInfoList[0].posX="123213"'

頭一次發(fā)現(xiàn)還可以使用這種方式,就像json傳輸一樣,不過(guò)需要手動(dòng)設(shè)置下標(biāo),對(duì)了,文件也可以這樣傳輸,可以放對(duì)象里面也可以放外面,但是屬性名字一樣會(huì)雙重注入。

SpringBoot的接收

1. 使用@RequestParam注解來(lái)接收表單數(shù)據(jù)中的數(shù)組對(duì)象。

以下是一個(gè)示例:

@PostMapping("/example")
public ResponseEntity<String> handleFormData(@RequestParam("objects") List<Object> objects) {
    // 處理接收到的對(duì)象數(shù)組
    return ResponseEntity.ok("Received " + objects.size() + " objects");
}

在上面的示例中,我們使用@RequestParam注解來(lái)聲明我們要接收名為objects的表單參數(shù),并將其映射到一個(gè)List<Object>類型的變量中。

2. 如果你的對(duì)象是一個(gè)自定義類,您可以使用@ModelAttribute注解來(lái)將表單數(shù)據(jù)映射到該類的實(shí)例中。以下是一個(gè)示例:

@PostMapping("/example")
public ResponseEntity<String> handleFormData(@ModelAttribute("customObject") CustomObject[] customObjects) {
    // 處理接收到的自定義對(duì)象數(shù)組
    return ResponseEntity.ok("Received " + customObjects.length + " custom objects");
}

在上面的示例中,我們使用@ModelAttribute注解來(lái)聲明我們要接收名為customObject的表單參數(shù),并將其映射到一個(gè)CustomObject[]類型的變量中。

3. `x-www-form-urlencoded` 和 `form-data` 協(xié)議的區(qū)別

`x-www-form-urlencoded` 和 `form-data` 是 HTTP 請(qǐng)求中常用的兩種表單數(shù)據(jù)編碼方式。

`x-www-form-urlencoded` 是默認(rèn)的編碼方式,它會(huì)將表單數(shù)據(jù)轉(zhuǎn)換為鍵值對(duì),并使用 `&` 符號(hào)進(jìn)行分隔,然后將鍵值對(duì)以 `key1=value1&key2=value2` 的形式進(jìn)行編碼。這種編碼方式通常用于較小的表單數(shù)據(jù),如登錄表單等。

而 `form-data` 則是一種更加靈活的編碼方式,它可以處理二進(jìn)制數(shù)據(jù)(如圖片、文件等)以及文本數(shù)據(jù)。它會(huì)將每個(gè)表單字段封裝成一個(gè)獨(dú)立的部分,每個(gè)部分都可以設(shè)置自己的 Content-Type,這樣就可以支持發(fā)送多個(gè)文件或者多個(gè)鍵值對(duì)。這種編碼方式通常用于上傳文件等操作。

總結(jié)

傳輸數(shù)組隊(duì)列不需要使用注解,在測(cè)試傳輸中不寫(xiě)注解反而能通過(guò)寫(xiě)了,寫(xiě)了@RequestPart注解反而通過(guò)不了,具體細(xì)節(jié)之后更新細(xì)則講解,這篇主要講解協(xié)議和請(qǐng)求,主要解決了表單形式傳輸對(duì)象的問(wèn)題。

參考

Difference Between form-data, x-www-form-urlencoded and raw in Postman | Baeldung

Forms in HTML documents

javascript - appending array to FormData and send via AJAX - Stack Overflow

使用formData向后臺(tái)傳遞數(shù)組對(duì)象文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-778000.html

到了這里,關(guān)于SpringBoot處理form-data表單接收對(duì)象數(shù)組的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • post請(qǐng)求設(shè)置表單form-data格式的幾種方式

    post請(qǐng)求設(shè)置表單form-data格式的幾種方式

    我用默認(rèn)的post方法發(fā)送數(shù)據(jù)的時(shí)候發(fā)現(xiàn)后端獲取不到數(shù)據(jù),然而在network中看到參數(shù)是的確傳出去的了。而且用postman測(cè)試的時(shí)候也是可以的,比較了下兩個(gè)的不同發(fā)現(xiàn)是postman使用的是form-data格式,于是用form-data格式再次請(qǐng)求,發(fā)現(xiàn)OJBK 這兩種格式都是無(wú)法使用的: ? 方法一:

    2024年02月11日
    瀏覽(29)
  • Python 實(shí)現(xiàn)http server接收mutipart/form-data文件 方法1

    Python 實(shí)現(xiàn)http server接收mutipart/form-data文件 方法1

    PostMan生成Python 代碼: 代碼基本功能 :實(shí)現(xiàn)將客戶端發(fā)送的文件轉(zhuǎn)發(fā)到本地。 代碼中的打印 :為了調(diào)試方便代碼中增加了一些關(guān)于boudary的打印。 代碼中的自定義字段 :代碼中的 ‘file’ 就是postman客戶端請(qǐng)求中的文件名稱。

    2024年02月07日
    瀏覽(15)
  • asp.net core webapi接收application/x-www-form-urlencoded和form-data參數(shù)

    框架:asp.net core webapi asp.net core webapi接收參數(shù),請(qǐng)求變量設(shè)置 Post ([FromForm]TokenRequestInput user) 可以接收發(fā)送類型為multipart/form-data、application/x-www-form-urlencoded的數(shù)據(jù) 請(qǐng)求地址 http://localhost:5170/api/User/GetToken?code=22222 IFormFile file這個(gè)參數(shù)是接收文件,mimeType=multipart/form-data 參數(shù)use

    2024年04月15日
    瀏覽(20)
  • 關(guān)于form-data和http請(qǐng)求body&網(wǎng)關(guān)處理

    場(chǎng)景 【在http過(guò)網(wǎng)關(guān)時(shí),修改內(nèi)容】 在網(wǎng)關(guān)過(guò)濾器中,監(jiān)聽(tīng)所有http請(qǐng)求,截獲請(qǐng)求,并且修改body中內(nèi)容。添加一組用戶憑證,然后通過(guò)網(wǎng)關(guān)走向后臺(tái)服務(wù) 使用applicaon/json的請(qǐng)求時(shí),能很好的解決 使用form-data時(shí),body采用下面的 \\\'boundary—\\\'限定邊界,加入?yún)?shù)的形式進(jìn)行傳遞

    2024年02月08日
    瀏覽(23)
  • Go語(yǔ)言項(xiàng)目后端使用gin框架接收前端發(fā)送的三種格式數(shù)據(jù)(form-data,json,Params)

    Go語(yǔ)言項(xiàng)目后端使用gin框架接收前端發(fā)送的三種格式數(shù)據(jù)(form-data,json,Params)

    使用gin框架的BindJSON方法,將前端的json格式數(shù)據(jù)將后端的結(jié)構(gòu)體相綁定,從而獲取到前端所發(fā)送的數(shù)據(jù),并返回給前端 1.將前端發(fā)送過(guò)來(lái)的數(shù)據(jù)全部返回 2.將前端發(fā)送過(guò)來(lái)的json格式數(shù)據(jù)選擇性返回 ? 使用gin框架的PostForm方法,從而獲取到前端form格式的參數(shù) 使用gin框架中的

    2024年02月01日
    瀏覽(436)
  • Vue中form表單校驗(yàn)rules的問(wèn)題(對(duì)象數(shù)組過(guò)濾新對(duì)象數(shù)組 ,對(duì)象校驗(yàn),數(shù)組校驗(yàn),)

    const data = reactive({ form: { js //往數(shù)組中添加這八個(gè)相機(jī)配置參數(shù) for(var i=0;i8;i++){ const clonedLightObject1 = { …data.form.lightObject1 }; clonedLightObject1.productNameId=pid clonedLightObject1.cameraType=i clonedLightObject1.shootingNumber=1 頁(yè)面

    2024年02月08日
    瀏覽(39)
  • SpringBoot:使用application/octet-stream 流式上傳大文件,解決Mutipartfile multipart/form-data上傳產(chǎn)生臨時(shí)文件問(wèn)題

    SpringBoot:使用application/octet-stream 流式上傳大文件,解決Mutipartfile multipart/form-data上傳產(chǎn)生臨時(shí)文件問(wèn)題

    multipart的流不是HTTPRequest的流,而是服務(wù)器的臨時(shí)文件流 multipart/form-data是表單上傳,接口可以從Mutipartfile對(duì)象獲取輸入流getInputStream,表面上看沒(méi)產(chǎn)生臨時(shí)文件 org.springframework.web.multipart.support.StandardMultipartHttpServletRequest的getInputStream 這里面的流是從DiskFileItem(一眼磁盤)拿的

    2024年02月14日
    瀏覽(26)
  • vue +element UI form表單校驗(yàn)數(shù)組嵌套,數(shù)組對(duì)象必填校驗(yàn)

    vue +element UI form表單校驗(yàn)數(shù)組嵌套,數(shù)組對(duì)象必填校驗(yàn)

    使用element表單時(shí)會(huì)出現(xiàn)數(shù)組對(duì)象類型的數(shù)據(jù)結(jié)構(gòu)并且需要必填校驗(yàn) 這時(shí)數(shù)組對(duì)象的檢驗(yàn)方法就為paramJsonListRules 注意的是為了實(shí)現(xiàn)校驗(yàn),在需要校驗(yàn)的el-form-item內(nèi)通過(guò)自己的:rules加入對(duì)象的校驗(yàn)方法,例如圖中想給參數(shù)值加校驗(yàn)則直接在相關(guān)el-form-item內(nèi)加入 :rules=\\\"paramJsonLis

    2024年02月11日
    瀏覽(30)
  • Java發(fā)送form-data請(qǐng)求

    在Java中發(fā)送form-data請(qǐng)求,可以使用Apache HttpClient或OkHttp這樣的HTTP客戶端庫(kù)來(lái)發(fā)送請(qǐng)求。 1.添加依賴 2.代碼 對(duì)于HttpClient對(duì)象,HttpClientBuilder.create().build()創(chuàng)建的實(shí)例是 不需要手動(dòng)關(guān)閉 的。 在使用HttpClientBuilder創(chuàng)建HttpClient對(duì)象時(shí),不需要手動(dòng)關(guān)閉HttpClient對(duì)象。這是因?yàn)镠ttpCli

    2024年02月10日
    瀏覽(25)
  • postman form-data傳參java實(shí)現(xiàn)

    postman form-data傳參java實(shí)現(xiàn)

    java實(shí)現(xiàn): 第二種方式: 導(dǎo)入依賴:

    2024年02月12日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包