iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
Mobile Development

Spring Boot+Android 30天 實戰開發 系列 第 4

【Day - 04】Spring Boot中常用的參數傳遞方式(上)

  • 分享至 

  • xImage
  •  

1. 引言

在Spring Boot應用開發中,參數傳遞是一個至關重要的主題。不管您正在構建什麼類型的應用程式,幾乎都需要與客戶端或其他服務之間進行數據交換。這就是參數傳遞變得至關重要的地方。本篇將深入探討Spring Boot中不同的參數傳遞方式,以及它們的用途和最佳實踐。

為什麼參數傳遞如此重要?
在Web開發中,參數傳遞是將信息從客戶端傳遞到服務器的關鍵方法之一。這些信息可以包括使用者輸入、配置設置、身份驗證令牌等等。正確的參數傳遞方式不僅可以提高應用程式的性能,還可以提供更好的安全性和使用者體驗。

  • 本篇將深入討論 Spring Boot 中常用的參數傳遞方式,包括:
    1. 請求體參數(POST請求)
    2. 路徑參數
    3. 查詢參數(URL參數)
    4. 請求頭參數
    5. Cookie參數
    6. 表單參數
    7. 文件上傳參數

每個小節都將詳細介紹如何在Spring Boot應用程式中使用這些參數傳遞方式,同時提供示例程式碼和使用Postman工具測試這些參數傳遞方式的方法。讓我們繼續了解這些方法,為構建高效、靈活的應用程式打下堅實的基礎。

2、請求體參數(POST請求)

在 Web 開發中,POST 請求是一種常見的方式,用於向伺服器提交數據。這些數據通常包含在請求的請求體中。本節將詳細介紹請求體參數的概念以及如何在 Spring Boot 中處理它們。

2.1 什麼是請求體參數?

請求體參數是通過 HTTP POST 請求的請求體(Request Body)發送給伺服器的數據。這種數據通常是以 JSON、XML、表單數據等格式存在的。請求體參數在傳遞複雜數據結構時非常有用,例如提交使用者註冊信息或上傳文件。

2.2 如何在 Spring Boot 中處理請求體參數?

在 Spring Boot 中,您可以使用 @RequestBody 注解來接收請求體參數。這個注解告訴 Spring Boot 將請求體中的數據反序列化為相應的 Java 物件。以下是一個示例:

@RestController
@RequestMapping("/api")
public class MyController {

    @PostMapping("/user")
    public String createUser(@RequestBody User user) {
        // 處理接收到的 user 物件
        return "User created: " + user.getName();
    }
}

在上面的示例中,@RequestBody 注解將請求體中的數據反序列化為一個User物件,然後您可以在方法中處理使用者註冊邏輯。

2.3 測試請求體參數

使用Postman進行測試:

  • 選擇POST請求類型,輸入URL http://localhost:8080/api/user
  • 在Body選項卡中選擇"raw",選擇JSON格式,輸入請求體數據,如:
{
  "name": "Ian Liu",
  "email": "ian@example.com"
}

圖片無法顯示

3、路徑參數

3.1 路徑參數的作用和用途

路徑參數是一種在URL路徑中動態傳遞資料的方式,例如/api/user/{id}{id}是動態的值。它通常用於標識資源、傳遞唯一識別符或執行特定操作。在RESTful API設計中,路徑參數常用於指定資源的ID或其他識別符,以便伺服器可以根據這些參數來處理請求。

3.2 獲取路徑參數

在Spring Boot中,您可以使用@PathVariable註解來捕獲URL路徑中的參數。以下是一個簡單的範例:

首先,先定義帶有路徑參數的Controller:

@RestController
@RequestMapping("/api")
public class UserController {

    @GetMapping("/user/{id}")
    public String getUserById(@PathVariable Long id) {
        // 使用id進行使用者查詢操作
        return "User details for ID: " + id;
    }
}

3.3 測試路徑參數

使用Postman進行測試:

  • 選擇GET請求類型,輸入URL http://localhost:8080/api/user/123
  • 發送請求,查看響應。

在這個示例中,我們通過{id}來定義了一個路徑參數,然後在方法參數中使用@PathVariable註解來捕獲該參數。

路徑參數是一種靈活且常用的參數傳遞方式,它允許您直接將參數嵌入到URL中,使得請求更具有可讀性和語義性。

4、查詢參數(URL參數)

4.1 查詢參數在API中的作用

查詢參數是通過在URL中添加鍵值對來傳遞的,通常用於過濾、分頁和排序等操作。查詢參數可以根據請求的需要進行定制,從而實現不同的操作和返回不同的結果。

  • URL的查詢格式為:http://example.com/api/endpoint?key1=value1&key2=value2

在這個URL中,key1key2是查詢參數的鍵,而value1value2則是對應的值。多個查詢參數可以用&符號來分隔。在API中,服務端可以解析這些查詢參數,根據鍵值對的內容來執行相應的操作。

例如,一個使用查詢參數的API請求可能是:http://example.com/api/products?category=electronics&sort=price

在這個請求中,categorysort都是查詢參數的鍵,而electronicsprice則是對應的值,服務端可以根據這些參數來返回特定類別的產品,並按照價格排序。

總之,查詢參數是通過URL中的鍵值對來定義的,用於在API中指定特定的操作需求,讓使用者可以根據需求自定義請求的結果。

4.2 獲取查詢參數

在Spring Boot中,您可以使用@RequestParam註解來獲取查詢參數。以下是一個簡單的示例:

@RestController
@RequestMapping("/api")
public class ProductController {

    @GetMapping("/products")
    public String getProducts(@RequestParam("category") String category,
                              @RequestParam("page") int page,
                              @RequestParam("size") int size) {
        // 使用category、page和size進行產品查詢操作
        return "Products of category " + category + ", page " + page + ", size " + size;
    }
}

4.3 測試查詢參數

使用Postman進行測試:

  • 選擇GET請求類型,輸入URL:
    http://localhost:8080/api/products?category=electronics&page=1&size=10
    點擊"Params選項卡"可以看到URL對應的3個鍵值對,所以修改或添加鍵值對上面的URL也會同步更動。
  • 發送請求,查看響應。
    圖片無法顯示

在這個示例中,我們使用了@RequestParam註解來獲取查詢參數,分別是category、page和size。

查詢參數是在API設計中非常常見和實用的一種參數傳遞方式,它使得客戶端可以根據需求靈活地過濾、排序和分頁資料。

5、請求頭參數

5.1 請求頭參數的含義

請求頭參數是在HTTP請求的頭部中包含的鍵值對資料。這些參數用於傳遞關於請求的附加資訊,如認證令牌、內容類型、語言等。通過請求頭參數,客戶端和伺服器可以進行更高級的通訊和交互。

5.2 獲取請求頭參數

在Spring Boot中,您可以使用@RequestHeader註解來獲取請求頭參數。以下是一個簡單的示例:

@RestController
@RequestMapping("/api")
public class HeaderController {

    @GetMapping("/header-info")
    public String getHeaderInfo(@RequestHeader("User-Agent") String userAgent,
                                @RequestHeader("Authorization") String authorization) {
        return "User-Agent: " + userAgent + "<br>" +
               "Authorization: " + authorization;
    }
}

5.3 測試請求頭參數

使用Postman進行測試:

  • 選擇GET請求類型,輸入URL http://localhost:8080/api/header-info
  • 在Headers選項卡中添加鍵值對,如:
    • Key: User-Agent, Value: MyCustomUserAgent (這裡使用Postman預設的)
    • Key: Authorization, Value: Bearer myAuthToken
  • 發送請求,查看響應。
    圖片無法顯示
    圖片無法顯示

在這個示例中,我們使用了@RequestHeader註解來獲取請求頭參數,分別是User-Agent和Authorization。

請求頭參數提供了一種在HTTP請求中傳遞元資料的方式,可用於驗證、鑒權、內容協商等目的。


上一篇
【Day - 03】開始Spring Boot之旅:建立及測試環境
下一篇
【Day - 05】Spring Boot中常用的參數傳遞方式(下)
系列文
Spring Boot+Android 30天 實戰開發 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言