我們寫好一個接口后,需要進行測試。有時我們會寫一個html表單提交,無疑增加了工作量,尤其是當參數比較多或者傳json或xml數據時,效率更是大大降低。我們可以使用基於FireFox的RESTClient或HttpRequester插件來進行測試。
打開火狐瀏覽器,在右上角的菜單中有附加組件,進入其中,直接搜索這兩個插件,安裝后重啟即可,安裝完后在瀏覽器右上方生成了插
件的圖標。
1 RESTClient
發送get請求時參數在url中;當發送post請求傳參時需要設置頭信息,點擊上圖中的Headers-Custom Header進行設置
2 HttpRequester
RestClient
1.傳輸單個參數
content-type:application/json;charset=UTF-8
requestbody
{ "username":"qqq" }
Controller
@RequestMapping(value = "/restClinet") @ResponseBody public String restClinet(@RequestBody String username) { logger.info("TestRestClient" + username ); // save trade return username; }
2.傳輸多個參數(對象)
{ "tradeId":"66", "tradeServer":"一夢十年", "tradeCurrency":"4500", "tradeMoney":"100", "tradeTime":"2018年10月10日 12:24:16", "tradeComment":"333" }
@RequestMapping(value = "/restClinet") @ResponseBody public Trade restClinet(@RequestBody Trade trade) { logger.info("TestRestClient" + trade); // save trade return trade; }
復合型json格式
{
"stuId":"66",
"stuName":"小紅",
"stuSex":"girl",
"book":{
"bookName":"math",
"bookOwner":"Jim"
}
}
ErrorCode
package com.my.base; public enum Error{ S001("S001","Success"), E001("E001","System error!"), E002("E002","Sorroy,user cannot find in database!"), E003("E003","Unknow error!"); private String errorCode; private String errorMessage; public String getErrorCode() { return errorCode; } public void setErrorCode(String errorCode) { this.errorCode = errorCode; } public String getErrorMessage() { return errorMessage; } public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; } private Error(String errorCode, String errorMessage) { this.errorCode = errorCode; this.errorMessage = errorMessage; } }
@RequestMapping(value = "/restClinet") @ResponseBody public Map<String, Object> restClinet(@RequestBody Trade trade) { logger.info("TestRestClient" + trade); // save trade Map<String, Object> results = new HashMap<String, Object>(); results.put(Error.S001.getErrorCode(),Error.S001.getErrorMessage()); results.put("trades",this.tradeService.getAllTrades()); return results; }
返回模版信息
3.HttpHeaders傳輸數據
1)添加HttpHeaders
2)獲取HttpHeaders
@RequestMapping(value = "/restClinet") @ResponseBody public Map<String, Object> restClinet(@RequestBody Trade trade,@RequestHeader HttpHeaders headers) { logger.info("TestRestClient" + trade); // save trade String userCountry = headers.getFirst("userType"); Map<String, Object> results = new HashMap<String, Object>(); results.put(Error.S001.getErrorCode(),Error.S001.getErrorMessage()); results.put("userCountry", userCountry); results.put("trades",this.tradeService.getAllTrades()); return results; }
或者
@RequestMapping(value = "/restClinet") @ResponseBody public Map<String, Object> restClinet(@RequestBody Trade trade,@RequestHeader("userType") String userType) { logger.info("TestRestClient" + trade); // save trade Map<String, Object> results = new HashMap<String, Object>(); results.put(Error.S001.getErrorCode(),Error.S001.getErrorMessage()); results.put("userType", userType); results.put("trades",this.tradeService.getAllTrades()); return results; }