在開發web應用時,在對Spring中的Controller進行測試時,需要發送各種get以及post請求進行測試,當然可以自己在浏覽器裡輸入url或者對于測試而言使用Spring提供的
MockMvc
編寫代碼進行測試,但是當我們想要測試諸如帶Form表格送出(送出檔案)的post等請求時,直接在浏覽器裡輸入url或者使用
MockMvc
(這個我還不知道怎麼弄…)就不大好實作了,Restlet Client為我們提供了便利。
其位址為:https://restlet.com/modules/client/,可以安裝Chrome浏覽器插件,這樣使用起來就更加友善,插件在浏覽器界面如圖所示:
主要有三個部分,REQUEST部分用來建立請求,RESPONSE部分表示請求的回複,可以在
COMPLETE REQUEST HEADERS部分檢視自己發出的請求的完整請求頭,接下來便建立請求
1. 建立普通get請求
發送get請求比較簡單,直接輸入url添加參數就可以了
2. 建立普通post請求
發送普通的post請求與1中的發送get請求類似,隻是把METHOD改成post即可,再添加必要的參數
3. 建立post請求,模拟form送出表單
有時我們需要模拟form表單送出檔案,此時對應controller代碼可以如下擷取
@RequestMapping("/proj")
@ResponseBody
public AjaxResult upload(String fileName, InputStream inputStream, HttpServletRequest request) {
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
int fileCount = ;
Iterator<String> iterator = multiRequest.getFileNames();
while (iterator.hasNext()) {
String formFileElementName = iterator.next();
fileCount++;
MultipartFile multipartFile = multiRequest.getFile(formFileElementName);
if (null == multipartFile) {
throw new Exception("檔案不能為空");
}
}
}
當我們發送模拟form表單請求時,注意到request請求實際為
MultipartHttpServletRequest
類型,Spring會自動填充inputStream參數,實際上他與request裡的inputStream是同一個,在restlet可以如下模拟
有幾個需要注意的地方:
-
選項裡面選擇BODY
Form
- 點選
并選擇類型為Add form parameter
,同時注意一定要寫檔案名,不然Controller裡的代碼File
是擷取不到檔案名的Iterator<String> iterator = multiRequest.getFileNames();
- 注意
類型為Content-Type
我們檢視下面的COMPLETE REQUEST HEADERS,可以發現我們的請求類型為 multi/form-data,同時Restlet Client會自動幫我們設定multipart/form-data
頭部boundary
4. 建立post請求,直接傳輸檔案
除了模拟form表單送出檔案,我們也可以直接在body裡添加檔案,這時controller對應的request就不是
類型 選擇BODY中的File選項,并拖拽檔案,此時Restlet Client會自動幫我們填入對應的Content-type類型MultipartHttpServletRequest