一、前言
后端的第一天感覺難度就上來了,可能是基礎太過薄弱了吧。目前看視頻已經有點跟不上了,果然15天想要拿下還是太勉強了點。30天還差不多。不知道讀者們有沒有好好的去學這方面的知識,沒有什么是學不會的,關鍵是堅持。
Postman這款應用一定要好好的去熟悉一下,挺重要的。
明天試著做一下綜合案例,ヾ(?°?°?)ノ゙。
二、Postman簡介
Postman 是一個流行的 API 開發工具,主要用于測試、調試和管理 API。它提供了一個用戶友好的界面,使開發者能夠輕松地發送 HTTP 請求、查看響應以及分析請求的結果。以下是 Postman 的主要特點和功能:
發送 HTTP 請求:
- Postman 允許用戶發送各種類型的 HTTP 請求,如 GET、POST、PUT、DELETE 等,可以設置請求頭、請求體、參數等。
組織和管理請求:
- 用戶可以創建多個請求集合,每個集合可以包含多個請求,方便組織和管理不同的 API 請求。
自動化測試:
- Postman 支持創建測試腳本,可以自動化執行 API 的測試,驗證響應的正確性和性能。
環境和變量:
- 可以設置環境變量和全局變量,用于在不同的環境中管理 API 的請求和測試。
實時調試:
- 提供實時的響應預覽和格式化,方便開發者查看 API 返回的數據,支持多種數據格式,如 JSON、XML、HTML 等。
協作與分享:
- Postman 允許用戶分享請求和集合,方便團隊成員協作,還可以導出和導入請求集合以便備份或分享給其他開發者。
集成其他工具:
- 支持與其他開發工具和服務集成,如 Swagger、GitHub、Jenkins 等,擴展了其功能和應用場景。
三、postman的安裝
第一步:訪問官網
Postman API Platform | Sign Up for Freehttps://www.postman.com/
第二步:下載
四、各種類型的請求
溫馨提示:此部分只進行代碼上的講解,方法部分在全套源代碼中。
1. 簡單實體參數
//1.簡單實體參數@RequestMapping("/simpleParam")public String simpleParam(String name,int age) {System.out.println(name+":"+age);return "OK";}
分析:
注解 @RequestMapping
:
@RequestMapping("/simpleParam")
?指定了處理的 URL 路徑為 "/simpleParam"。當有請求到達這個路徑時,Spring MVC 將調用?simpleParam
?方法來處理請求。
方法簽名:
public String simpleParam(String name, int age)
?是控制器方法的簽名。它接收兩個參數:name
(String 類型)和?age
(int 類型)。
方法體:
- 方法體內首先使用?
System.out.println(name+":"+age);
?打印接收到的?name
?和?age
?參數值到控制臺。 - 然后方法返回字符串 "OK"。
參數綁定:
- Spring MVC 會根據請求中的參數名字和方法的參數名字進行自動綁定。例如,如果有一個 HTTP GET 請求發送到?
/simpleParam
,并且請求參數為?name=John
?和?age=30
,那么 Spring MVC 將自動將?name
?綁定為 "John",將?age
?綁定為整數 30。
返回值:
- 控制器方法的返回值為一個字符串 "OK"。在 Spring MVC 中,這個字符串通常表示請求處理成功,并返回給客戶端。
結果展示:
2. 復雜實體參數
//2.復雜實體參數@RequestMapping("/complacePojo")public String complacePojo(user user){System.out.println(user);return "OK";}
代碼分析:
1.@RequestMapping("/complacePojo")
?指定了處理的 URL 路徑為 "/complacePojo"。當有請求到達這個路徑時,Spring MVC 將調用?complacePojo
?方法來處理請求。2.public String complacePojo(user user)
?是控制器方法的簽名。它接收一個名為?user
?的參數,類型為?user
。這里的?user
?可能是一個自定義的 Java Bean 類,用于封裝用戶提交的數據。- 3.方法體內首先使用?
System.out.println(user);
?打印接收到的?user
?對象到控制臺。????????然后方法返回字符串 "OK"。
- 4.Spring MVC 將嘗試將 HTTP 請求中的參數與?
user
?類的屬性進行自動綁定。例如,如果請求提交了?user
?對象的屬性?name
?和?age
,Spring MVC 將會嘗試將這些值設置到?user
?對象的對應屬性上。- 5.控制器方法的返回值為一個字符串 "OK"。在 Spring MVC 中,這個字符串通常表示請求處理成功,并返回給客戶端。
結果展示:
3. 數組參數
//3.數組參數@RequestMapping("/arrayParam")public String arrayParam(String[]hobby){System.out.println(Arrays.toString(hobby));return "OK";}
代碼分析:
public String arrayParam(String[] hobby)
?是控制器方法的簽名。它接收一個名為?hobby
?的參數,類型為?String[]
。這表示它可以接收一個名為?hobby
?的數組作為 HTTP 請求的參數。System.out.println(Arrays.toString(hobby));
?打印接收到的?hobby
?數組內容到控制臺。這行代碼將數組轉換為字符串形式并輸出,以便查看實際接收到的數據。- Spring MVC 將嘗試將 HTTP 請求中的參數綁定到?
hobby
?數組上。例如,如果請求中包含多個名為?hobby
?的參數(如?hobby=reading
、hobby=traveling
),Spring MVC 將會將這些值存儲在?hobby
?數組中。- 這種方法適用于接收客戶端傳遞的數組形式的數據,例如多選框選擇、多個復選框的值等。通過定義方法參數為數組,Spring MVC 能夠直接將這些值綁定到數組元素中。
注意事項:
確保請求中的參數命名正確,并且與方法參數的名稱相匹配。Spring MVC 將根據參數名進行自動綁定,因此名稱不匹配可能導致綁定失敗或錯誤的數據處理。
結果展示:
4. 集合參數
//4.集合傳參@RequestMapping("/ListParam")public String ListParam(@RequestParam List<String>hobby){System.out.println(hobby);return "OK";}
代碼分析:
public String ListParam(@RequestParam List<String> hobby)
?是控制器方法的簽名。它接收一個名為?hobby
?的參數,類型為?List<String>
。使用?@RequestParam
?注解明確指定了要從請求中獲取的參數名為?hobby
。- Spring MVC 將嘗試將 HTTP 請求中名為?
hobby
?的參數的多個值綁定到?hobby
?列表中。例如,如果請求中包含多個?hobby
?參數(如?hobby=reading&hobby=traveling
),Spring MVC 將這些值存儲在?hobby
?列表中。- 這種方法適用于需要接收多個同名參數的情況,例如多選框選擇、多個復選框的值等。通過定義方法參數為?
List<String>
?類型,Spring MVC 能夠直接將這些值綁定到列表中。
結果展示:
5. 日期和時間參數
//5.日期時間傳參@RequestMapping("/dateParam")public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){System.out.println(updateTime);return "OK";}
代碼分析:
public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime)
?是控制器方法的簽名。它接收一個名為?updateTime
?的參數,類型為?LocalDateTime
。使用?@DateTimeFormat
?注解指定了日期時間的格式為 "yyyy-MM-dd HH:mm:ss",以便正確解析請求中的日期時間字符串。- Spring MVC 將嘗試將 HTTP 請求中的日期時間參數按照指定的格式 "yyyy-MM-dd HH:mm:ss" 解析為?
LocalDateTime
?對象,并將其傳遞給?updateTime
?參數。- 這種方法適用于需要接收特定格式的日期時間參數的情況,例如記錄最后更新時間、指定某個事件發生的時間等。
注意事項:
確保請求中的日期時間字符串格式與指定的?@DateTimeFormat
?注解中的格式相匹配,否則會導致解析失敗或者獲得不正確的數據。
結果展示:
6. Json參數
//6.Json參數@RequestMapping("/jsonParam")public String jsonParam(@RequestBody user user){System.out.println(user);return "OK";}
代碼分析:
public String jsonParam(@RequestBody user user)
?是控制器方法的簽名。它使用?@RequestBody
?注解來指示 Spring MVC 從請求體中獲取 JSON 數據,并嘗試將其轉換為?user
?對象。這里的?user
?類型是自定義的,通常應該包含與請求體 JSON 結構相匹配的字段。@RequestBody
?注解告訴 Spring MVC 從 HTTP 請求的主體中提取數據,并嘗試將其轉換為?user
?對象。Spring MVC 使用默認的 JSON 轉換器(通常是 Jackson)來完成從 JSON 到 Java 對象的反序列化過程。- 這種方法適用于需要接收復雜結構的 JSON 數據的情況,例如通過 REST API 提交用戶信息、創建資源等操作。
注意事項:
確保請求的 JSON 結構與?user
?對象的字段名和類型相匹配,否則反序列化可能會失敗或者得到不正確的數據。
user
?類型必須有默認的無參構造函數,以便 JSON 反序列化庫可以實例化對象。
結果展示:
7. 單個路徑參數
//7.單個路徑參數@RequestMapping("/pathParam/{id}")public String pathParam(@PathVariable int id){System.out.println(id);return "OK";}
代碼分析:
@RequestMapping("/pathParam/{id}")
?指定了處理的 URL 路徑為 "/pathParam/{id}"。{id}
?是一個占位符,表示這個路徑可以接受一個名為?id
?的變量作為參數。當有符合這個路徑的 GET 請求到達時,Spring MVC 將調用?pathParam
?方法來處理請求。@PathVariable int id
?注解在方法參數上,指示 Spring MVC 將 URL 中的?{id}
?值映射到方法的?id
?參數上。在這個例子中,Spring MVC 將提取路徑中的?id
?值,并將其轉換為?int
?類型,然后傳遞給方法?pathParam
。- Spring MVC 能夠根據 URL 路徑中的占位符?
{id}
,將其解析為方法參數?id
。這使得我們可以在路徑中傳遞參數,而不是在請求體或查詢參數中傳遞。- 這種方法適用于需要從 URL 中獲取特定信息的情況,例如獲取資源的詳細信息,根據 ID 查詢特定記錄等操作。
注意事項:
確保路徑中的變量名?{id}
?與?@PathVariable
?注解中的參數名?id
?保持一致,以確保正確的參數綁定。
如果路徑參數類型不匹配(例如路徑中是數字,但方法參數是字符串),Spring MVC 可能會拋出類型轉換錯誤或者返回 404 錯誤。
結果展示:
8. 多個路徑參數
//8.多個路徑參數@RequestMapping("pathParam2/{id}/{name}")public String pathParam2(@PathVariable int id,@PathVariable String name){System.out.println(id+":"+name);return "OK";}
代碼分析:
基本原理和單個路徑大致相同
注意事項:
確保路徑中的變量名?{id}
?和?{name}
?與?@PathVariable
?注解中的參數名?id
?和?name
?保持一致,以確保正確的參數綁定。
結果展示:
五、響應
一般應用的時候為了防止太過混亂,會有一個統一的標準,因為只是認識,所以在這里就不介紹了,想要了解的讀者可以去看源代碼。里面包含這一部分。
1. 響應-字符串
//9.字符串@RequestMapping("/strParam")public String strParam(){System.out.println("Hello World");return "OK";}
System.out.println("Hello World");
?這行代碼會在控制臺打印輸出 "Hello World"。它用于在方法被調用時輸出一條消息到控制臺,這在調試和跟蹤代碼執行流程時非常有用。- 這種方法適用于需要執行某些邏輯或操作,但不需要返回動態生成的內容或者模板渲染的情況。例如,可以在這里執行一些后臺任務、記錄日志或者簡單的邏輯處理。
- 如果方法的返回值是 "OK",Spring MVC 將會嘗試查找與請求對應的視圖或者處理下一個處理程序,具體取決于應用程序的配置和處理鏈的設置。
2. 響應-數組
//10.數組@RequestMapping("/arrParam")public Address arrParam(){Address address = new Address();address.setProvince("河南");address.setCity("鄭州");return address;}
Address address = new Address();
?創建了一個?Address
?對象,假設這是一個自定義的 Java 類,用來表示地址信息。address.setProvince("河南");
?設置地址對象的省份為 "河南"。address.setCity("鄭州");
?設置地址對象的城市為 "鄭州"。return address;
?返回這個填充了省份和城市信息的?Address
?對象。- 控制器方法返回的是一個?
Address
?對象。在 Spring MVC 中,如果方法返回的是一個對象,Spring MVC 會自動將其轉換為 JSON 格式(默認情況下),并作為 HTTP 響應體返回給客戶端。- 這種方法適用于需要從服務器端返回某個 Java 對象的情況,比如獲取用戶地址信息、商品信息等。客戶端可以通過 HTTP GET 請求訪問?
/arrParam
?路徑,并獲取到 JSON 格式的地址信息。Address
?類必須是可序列化的,并且通常需要正確實現?toString()
、equals()
?和?hashCode()
?方法,以便在轉換為 JSON 格式時能夠正確工作。- 在實際應用中,可以使用更復雜的對象結構,例如包含多個屬性的對象,甚至嵌套對象,Spring MVC 會自動處理這些情況并將其轉換為相應的 JSON 格式。
3. 響應-集合
//11.集合@RequestMapping("/listParam")public List<Address> listParam(){List<Address> list = new ArrayList<>();Address address = new Address();address.setProvince("山東");address.setCity("菏澤");Address address1 = new Address();address1.setProvince("陜西");address1.setCity("西安");list.add(address);list.add(address1);return list;}
List<Address> list = new ArrayList<>();
?創建了一個?ArrayList
?對象?list
,用來存儲?Address
?對象。- 創建了兩個?
Address
?對象?address
?和?address1
,分別代表不同的地址信息。address
?的省份設置為 "山東",城市設置為 "菏澤"。address1
?的省份設置為 "陜西",城市設置為 "西安"。list.add(address);
?將?address
?對象添加到?list
?列表中。list.add(address1);
?將?address1
?對象添加到?list
?列表中。- 控制器方法返回的是一個?
List<Address>
?對象,即包含兩個填充了省份和城市信息的?Address
?對象的列表。在 Spring MVC 中,這些對象會被自動轉換為 JSON 數組格式,并作為 HTTP 響應體返回給客戶端。
六、全套源代碼
目錄
text1代碼
package com.von.demo5;import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import pojo.Address;
import pojo.user;import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;//請求處理類
@RestController
public class text1 {//springboot方式請求//1.簡單實體參數@RequestMapping("/simpleParam")public String simpleParam(String name,int age) {System.out.println(name+":"+age);return "OK";}//2.復雜實體參數@RequestMapping("/complacePojo")public String complacePojo(user user){System.out.println(user);return "OK";}//3.數組參數@RequestMapping("/arrayParam")public String arrayParam(String[]hobby){System.out.println(Arrays.toString(hobby));return "OK";}//4.集合傳參@RequestMapping("/ListParam")public String ListParam(@RequestParam List<String>hobby){System.out.println(hobby);return "OK";}//5.日期時間傳參@RequestMapping("/dateParam")public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){System.out.println(updateTime);return "OK";}//6.Json參數@RequestMapping("/jsonParam")public String jsonParam(@RequestBody user user){System.out.println(user);return "OK";}//7.單個路徑參數@RequestMapping("/pathParam/{id}")public String pathParam(@PathVariable int id){System.out.println(id);return "OK";}//8.多個路徑參數@RequestMapping("pathParam2/{id}/{name}")public String pathParam2(@PathVariable int id,@PathVariable String name){System.out.println(id+":"+name);return "OK";}
}
text2代碼
package com.von.demo5;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import pojo.Address;import java.util.ArrayList;
import java.util.List;
@RestController
public class text2 {//測試響應數據//9.字符串@RequestMapping("/strParam")public String strParam(){System.out.println("Hello World");return "OK";}//10.數組@RequestMapping("/arrParam")public Address arrParam(){Address address = new Address();address.setProvince("河南");address.setCity("鄭州");return address;}//11.集合@RequestMapping("/listParam")public List<Address> listParam(){List<Address> list = new ArrayList<>();Address address = new Address();address.setProvince("山東");address.setCity("菏澤");Address address1 = new Address();address1.setProvince("陜西");address1.setCity("西安");list.add(address);list.add(address1);return list;}
}
text3代碼
package com.von.demo5;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import pojo.Address;
import pojo.Result;import java.util.ArrayList;
import java.util.List;
@RestController
public class text3 {//使用result規范管理響應數據//9.字符串@RequestMapping("/strParam")public Result strParam(){System.out.println("Hello World");return Result.success("Hello World");}//10.數組@RequestMapping("/arrParam")public Result arrParam(){Address address = new Address();address.setProvince("河南");address.setCity("鄭州");return Result.success(address);}//11.集合@RequestMapping("/listParam")public Result listParam(){List<Address> list = new ArrayList<>();Address address = new Address();address.setProvince("山東");address.setCity("菏澤");Address address1 = new Address();address1.setProvince("陜西");address1.setCity("西安");list.add(address);list.add(address1);return Result.success(list);}
}
Address方法
package pojo;public class Address {private String province;private String city;@Overridepublic String toString() {return "Address{" +"province='" + province + '\'' +", city='" + city + '\'' +'}';}public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}
}
Result方法
package pojo;public class Result {private int code;//1代表成功,0代表失敗private String msg;//提示信息private Object data;//數據datapublic Result() {}public Result(int code, String msg, Object data) {this.code = code;this.msg = msg;this.data = data;}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}public static Result success(Object data) {return new Result(1, "success", data);}public static Result success() {return new Result(1, "success", null);}public static Result error(String msg) {return new Result(0, msg, null);}@Overridepublic String toString() {return "Result{" +"code=" + code +", msg='" + msg + '\'' +", data=" + data +'}';}
}
user方法
package pojo;public class user {private String name;private int age;private Address address;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}@Overridepublic String toString() {return "user{" +"name='" + name + '\'' +", age=" + age +", address=" + address +'}';}
}