postman使用方式(一)


一、概述

  對於接口的測試,可以使用客戶端版本的postman,也可以直接在chrome瀏覽器上安裝postman插件。客戶端版本的postman

功能比較強大,但是對於需要登錄后才能測試的接口,在測試時需要單獨設置如sessionid這樣的驗證參數;對於插件版的postman,

在測試時只需要訪問網址后,就可以直接設置請求參數,不需要在設置sessionid這樣的參數。

 

1. 請求體數據類型:

(1)form-data(post)

  既可以上傳鍵值對,也可以上傳文件(multipart/form-data)。當上傳的字段是文件時,會有Content-Type來說明文件類型;

content-disposition用來說明字段的一些信息;在springmvc中可以使用MultipartHttpServletRequest接收通過api根據"name"

獲取不同的鍵值,也可以通過MulTipartFile數組接收多個文件;


(2)x-www-form-urlencoded(post)

   會將表單內的數據轉換為鍵值對,比如,name=java&age = 23。后端采用@RequestParam來接收參數。@RequestParam用來

處理Content-Type: 為 application/x-www-form-urlencoded編碼的內容,提交方式GET、POST, @RequestParam可以處理get 方式

中queryString的值,也可以處理post方式中 body data的值,@RequestParam 底層是通過request.getParameter方式獲得參數的。

前端請求傳Json對象則后端使用@RequestParam(后端不加則為默認此方式)。

(3)raw(post)

   可以上傳任意格式的文本,可以上傳text、json、xml、html等;@RequestBody接受的是一個json對象的字符串,而不是Json對象

在請求時往往都是Json對象,用JSON.stringify(data)的方式就能將對象變成json字符串。前端請求傳Json對象的字符串則后端使用@RequestBody

(4)binary(post)

  只可以上傳二進制數據,通常用來上傳文件,由於沒有鍵值,所以,一次只能上傳一個文件(相當於Content-Type:application/octet-stream);

 

2. 注解@RequestParam與@RequestBody的區別

(1)@RequestParam

注解@RequestParam接收的參數是來自requestHeader中,即請求頭。通常用於GET請求,像POST、DELETE等其它類型的請求也可以使用。

使用示例:

請求url:
http://xxx:8080/getByNameAndType?name=王菲&type=1

@RequestParam有三個配置參數:
required 表示是否必須,默認為 true,必須; defaultValue 可設置請求參數的默認值; value 為接收url的參數名(相當於key值);

@RequestMapper(value="getByNameAndType", method=RequestMethod.GET)    
public List<User> getByNameAndType(@RequestParam(value="name", required=true, defaultValue="劉亦菲")String name,
@RequestParam(value="type", required=true, defaultValue="1")String type){......}

@RequestParam用來處理 Content-Type 為 application/x-www-form-urlencoded 編碼的內容,Content-Type默認為該屬性。 @RequestParam也可用於其它類型的請求,例如:POST、DELETE等請求。比如向表中插入單條數據,Controller 層的寫法如下圖所示:

@RequestMapper(value="save", method=RequestMethod.POST)    
public void save(User user){......}

(2)@RequestBody
注解@RequestBody接收的參數是來自requestBody中,即請求體。一般用於處理非Content-Type: application/x-www-form-urlencoded
編碼格式的數據,比如:application/json、application/xml等類型的數據。通常用於接收POST、DELETE等類型的請求數據,GET類型也可以適用。
就application/json類型的數據而言,使用注解@RequestBody可以將body里面所有的json數據傳到后端,后端再進行解析。

@RequestMapper(value="save", method=RequestMethod.POST)    
public void save(@RequestBody User user){......}

由於@RequestBody可用來處理 Content-Type 為 application/json 編碼的內容,所以在postman中,選擇body的類型為
row -> JSON(application/json),這樣在 Headers 中也會自動變為 Content-Type : application/json 編碼格式。
body 里面的 json 語句的 key 值要與后端實體類的屬性一一對應。
注意:前端使用$.ajax的話,一定要指定 contentType: "application/json;charset=utf-8;",默認為 application/x-www-form-urlencoded。

二、使用方法

我這里使用的是chrome插件的形式:

1. get

后端代碼:

@GetMapping("get")
public ResponseVO get(Integer id){
    return ResponseVO.success(roleService.getById(id));
}

 

2. post

(1)@RequestParam:前端需要傳json對象

    當后端采用數組接收時,前端測試時可以分別設置多對key-value,eg:

    ids:1  ids:2 ids:3

@PostMapping("delete")
public ResponseVO delete(@RequestParam("ids") Integer[] ids){
    roleService.delete(ids);
    return ResponseVO.success();
}

 

(2)@RequestBody:后端接收的json字符串

@PostMapping("edit")
public ResponseVO edit(@RequestBody RolePo rolePo){
    return ResponseVO.success(roleService.save(rolePo));
}

 

 

 

 

參考文檔:

https://blog.csdn.net/feiyst/article/details/88431621

注解@RequestParam與@RequestBody的使用場景

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM