天天看點

使用Restlet Client發送各種Get和Post請求

在開發web應用時,在對Spring中的Controller進行測試時,需要發送各種get以及post請求進行測試,當然可以自己在浏覽器裡輸入url或者對于測試而言使用Spring提供的

MockMvc

編寫代碼進行測試,但是當我們想要測試諸如帶Form表格送出(送出檔案)的post等請求時,直接在浏覽器裡輸入url或者使用

MockMvc

(這個我還不知道怎麼弄…)就不大好實作了,Restlet Client為我們提供了便利。

其位址為:https://restlet.com/modules/client/,可以安裝Chrome浏覽器插件,這樣使用起來就更加友善,插件在浏覽器界面如圖所示:

使用Restlet Client發送各種Get和Post請求

主要有三個部分,REQUEST部分用來建立請求,RESPONSE部分表示請求的回複,可以在

COMPLETE REQUEST HEADERS部分檢視自己發出的請求的完整請求頭,接下來便建立請求

1. 建立普通get請求

使用Restlet Client發送各種Get和Post請求

發送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可以如下模拟

使用Restlet Client發送各種Get和Post請求

有幾個需要注意的地方:

  • 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

    頭部
    使用Restlet Client發送各種Get和Post請求

    4. 建立post請求,直接傳輸檔案

    除了模拟form表單送出檔案,我們也可以直接在body裡添加檔案,這時controller對應的request就不是

    MultipartHttpServletRequest

    類型
    使用Restlet Client發送各種Get和Post請求
    選擇BODY中的File選項,并拖拽檔案,此時Restlet Client會自動幫我們填入對應的Content-type類型