摘要:今天開發(fā)項目時,遇到一個需求,需要上傳一個文件到微服務上,微服務是國外同事寫的,我負責處理和前端部分。問題就出在調(diào)用另一個微服務上。支持的請求方法的方式,屬于的類。這個請求是通過協(xié)議傳輸?shù)摹?/p>
今天開發(fā)項目時,遇到一個需求,需要上傳一個excel文件到微服務上,微服務是國外同事寫的, 我負責處理gateway和前端部分。在postman上測試接口沒有問題了,就準備在代碼就實現(xiàn)。 但是遇到了一個問題,無論怎樣都調(diào)用不成功。此時前端到gateway的調(diào)用是成功的,因為我可以把controller 拿到的數(shù)據(jù)成功寫入到本地。問題就出在gateway調(diào)用另一個微服務上。
@RequestMapping(value = "/import/excel", method = RequestMethod.POST) public Object importTableExcel(@RequestParam("file") MultipartFile file, @RequestParam("tableName") String tableName, @RequestParam("importType") String importType) { return ep2LookUpDBFeignClient.importTableExcel(file, tableName, importType); }
這個是controller代碼,前端用formData封裝提交,這里用MultipartFile 接收。到這一步是沒有問題的
@RequestMapping(value = "/api/tables/import/excel", method = RequestMethod.POST, produces = { MediaType.APPLICATION_JSON_UTF8_VALUE }, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) Object importTableExcel(@RequestParam("file") MultipartFile file,@RequestParam("tableName")String tableName, @RequestParam("importType")String importType);
這個是調(diào)用微服務的代碼,問題就出在這里。但是我一開始也是百思不得其解,參數(shù)設置什么的都沒 有問題了,那怎么還會出錯了。于是我各種找資料,然后在一篇文中,看到原來是注解寫錯了, MultipartFile 的注解應該是@RequestPart,而不是@RequestParam。改了之后果然可以了。
@RequestMapping(value = "/api/tables/import/excel", method = RequestMethod.POST, produces = { MediaType.APPLICATION_JSON_UTF8_VALUE }, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) Object importTableExcel(@RequestPart("file") MultipartFile file,@RequestParam("tableName")String tableName, @RequestParam("importType")String importType);
這個是可以成功運行的代碼,在此記錄一下,以免下次還犯同樣的錯誤。 以下是 @RequestParam和@RequestPart的區(qū)別 1.@RequestPart這個注解用在multipart/form-data表單提交請求的方法上。 2.支持的請求方法的方式MultipartFile,屬于Spring的MultipartResolver類。這個請求是通過 http協(xié)議傳輸?shù)摹? 3.@RequestParam也同樣支持multipart/form-data請求。 4.他們最大的不同是,當請求方法的請求參數(shù)類型不再是String類型的時候。 5.@RequestParam適用于name-valueString類型的請求域,@RequestPart適用于復雜的請求域(像JSON,XML)。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/75284.html
摘要:提供給文件上傳微服務用的。注意注解能注冊到服務上,是因為該注解包含了客戶端的注解,該是一個復合注解。地址可以查看該微服務網(wǎng)關代理了多少微服務的。 SpringCloud(第 024 篇)簡單文件上傳微服務,并加入 zuul 微服務后用 zuul 微服務地址采取curl或者頁面點擊實現(xiàn)文件上傳 - 一、大致介紹 1、本章節(jié)主要將文件上傳微服務加入到 zuul 服務中去,然后利用 zuul...
摘要:二實現(xiàn)步驟添加引用包模塊客戶端發(fā)現(xiàn)模塊監(jiān)控和管理生產(chǎn)環(huán)境的模塊添加應用配置文件,默認,默認打印日志添加簡單的上傳文件頁面添加上傳文件控制器上傳文件控制器。添加文件服務啟動類簡單文件上傳微服務采取或者頁面點擊實現(xiàn)文件上傳。 SpringCloud(第 023 篇)簡單文件上傳微服務采取curl或者頁面點擊實現(xiàn)文件上傳 - 一、大致介紹 1、本章節(jié)主要搭建了一個簡單的頁面上傳Web控制器,...
摘要:系統(tǒng)中的各個微服務可被獨立部署,各個微服務之間是松耦合的。每個微服務僅關注于完成一件任務并很好地完成該任務。傳統(tǒng)架構升級困難。新的輕量級協(xié)議容器化的出現(xiàn)。熔斷處理在微服務出現(xiàn)問題時防止出現(xiàn)雪崩效應。 聊完Spring Boot,我們來看看Spring Boot最重要的一方面的應用——Spring Cloud。 Spring Cloud 再聊SpringCloud之前我們先聊聊微服務。 ...
摘要:開公眾號差不多兩年了,有不少原創(chuàng)教程,當原創(chuàng)越來越多時,大家搜索起來就很不方便,因此做了一個索引幫助大家快速找到需要的文章系列處理登錄請求前后端分離一使用完美處理權限問題前后端分離二使用完美處理權限問題前后端分離三中密碼加鹽與中異常統(tǒng)一處理 開公眾號差不多兩年了,有不少原創(chuàng)教程,當原創(chuàng)越來越多時,大家搜索起來就很不方便,因此做了一個索引幫助大家快速找到需要的文章! Spring Boo...
閱讀 547·2021-08-31 09:45
閱讀 1655·2021-08-11 11:19
閱讀 891·2019-08-30 15:55
閱讀 831·2019-08-30 10:52
閱讀 2859·2019-08-29 13:11
閱讀 2934·2019-08-23 17:08
閱讀 2843·2019-08-23 15:11
閱讀 3074·2019-08-23 14:33