[Spring] Postman請求服務器帶@RequestPart註解的REST API的做法.

今天開發的時候, 爲了驗證數據, 想使用Postman批量插入多條數據到服務器中, 但是一直沒搜索到使用方法.

服務器的接口如下:

@RequestMapping("uploadFile")
    public void uploadFile(@RequestPart("file") MultipartFile file, @RequestPart("jsonObject") JsonObject jsonObject) {
        // ...
    }

嘗試了很多辦法, 最後通過下面的辦法搞定. 有同樣需求的同學可以參考下.

設置的要點是:

1)  Content-Type需要設置成undefined.

2) Body中的JsonObject也需要通過文件的方式上傳, 並且key的值和API的@RequestPart裏的value一致.

這裏想強調的是, 大家都知道MultipartFile file參數, 是通過在postman使用file上傳的. 但是和file一併通過@RequestPart的Json對象, 也是通過file的方式上傳的, 其他方式都不行.

文末附@RequestParam和@RequestPart的區別.

 

header設置:

body設置

 

轉載: 權威分析@RequestParam和@RequestPart 的區別(官方文檔)

https://yq.aliyun.com/articles/614605

 

@RequestPart

    /**
     * 單文件上傳
     * @param file
     * @param bucket
     * @return
     */
    @RequestMapping("uploadFile")
    public JsonResult uploadFile(@RequestPart("file") MultipartFile file, @RequestParam String bucket){

        String fileUrl = aliossService.uploadFile(file, bucket);
        Map<String,String> result = new HashMap<>();
        result.put("fileUrl",fileUrl);

        return success(result);
    }

@RequestParam

    /**
     * 上傳字符串
     * @param stringFile
     * @param bucket
     * @return
     */
    @RequestMapping("uploadStringFile")
    public JsonResult uploadStringFile(@RequestParam("stringFile") String stringFile, @RequestParam("bucket") String bucket){

        String fileUrl = aliossService.uploadStringFile(stringFile, bucket);
        Map<String,String> result = new HashMap<>();
        result.put("fileUrl",fileUrl);

        return success(result);
    }

二、比較一下他們的區別吧 
@RequestPart 
RequestPart

譯文: 
1.@RequestPart這個註解用在multipart/form-data表單提交請求的方法上。 
2.支持的請求方法的方式MultipartFile,屬於Spring的MultipartResolver類。這個請求是通過http協議傳輸的。 
3.@RequestParam也同樣支持multipart/form-data請求。 
4.他們最大的不同是,當請求方法的請求參數類型不再是String類型的時候。 
5.@RequestParam適用於name-valueString類型的請求域,@RequestPart適用於複雜的請求域(像JSON,XML)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章