在開發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 = 0;
Iterator<String> iterator = multiRequest.getFileNames();
while (iterator.hasNext()) {
String formFileElementName = iterator.next();
fileCount++;
MultipartFile multipartFile = multiRequest.getFile(formFileElementName);
if (null == multipartFile) {
throw new Exception("文件不能為空");
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
當我們發送模擬form表單請求時,注意到request請求實際為MultipartHttpServletRequest
類型,Spring會自動填充inputStream參數,實際上他與request里的inputStream是同一個,在restlet可以如下模擬
有幾個需要注意的地方:
BODY
選項里面選擇Form
- 點擊
Add form parameter
並選擇類型為File
,同時注意一定要寫文件名,不然Controller里的代碼Iterator<String>
是獲取不到文件名的
iterator = multiRequest.getFileNames(); - 注意
Content-Type
類型為multipart/form-data
我們查看下面的COMPLETE REQUEST HEADERS,可以發現我們的請求類型為 multi/form-data,同時Restlet Client會自動幫我們設置boundary
頭部
4. 創建post請求,直接傳輸文件
除了模擬form表單提交文件,我們也可以直接在body里添加文件,這時controller對應的request就不是MultipartHttpServletRequest
類型
選擇BODY中的File選項,並拖拽文件,此時Restlet Client會自動幫我們填入對應的Content-type類型