SpringBoot Get方式請求傳參用法介紹

本文將從以下多個方面對SpringBoot Get方式請求傳參做詳細的闡述,包括URL傳參、路徑傳參、請求頭傳參、請求體傳參等,幫助讀者更加深入地了解Get請求方式下傳參的相關知識。

一、URL傳參

在Get請求方式中,URL傳參是最為常見的一種方式,可以通過URL中添加參數的方式進行傳遞。例如:

http://localhost:8080/user?id=123&name=張三

在Controller中通過@RequestParam註解接收參數:

@RestController
public class UserController {
    @GetMapping("/user")
    public String getUser(@RequestParam("id") Integer id, @RequestParam("name") String name) {
        return "id: " + id + ", name: " + name;
    }
}

通過@RequestParam註解可以指定參數的名稱,如果未指定,則默認使用參數名作為名稱,例如上面的name參數。

如果參數為非必選參數,可以使用required屬性將其設置為非必選參數:

@GetMapping("/user")
public String getUser(@RequestParam(value = "id", required = false) Integer id, 
                       @RequestParam(value = "name", required = false) String name) {
    return "id: " + id + ", name: " + name;
}

此時如果請求中不帶有id或者name參數,也不會拋出異常。

二、路徑傳參

除了URL傳參外,Get請求方式還可以通過路徑進行參數傳遞,通常用於RESTful API中:

http://localhost:8080/user/123

在Controller中通過@PathVariable註解接收參數:

@RestController
public class UserController {
    @GetMapping("/user/{id}")
    public String getUserById(@PathVariable("id") Integer id) {
        return "id: " + id;
    }
}

通過@PathVariable註解可以將路徑中的參數獲取到,並作為方法的參數使用。

如果路徑中有多個參數需要傳遞,可以按照以下方式進行定義:

@RestController
public class UserController {
    @GetMapping("/user/{id}/name/{name}")
    public String getUserByIdAndName(@PathVariable("id") Integer id, @PathVariable("name") String name) {
        return "id: " + id + ", name: " + name;
    }
}

三、請求頭傳參

在Get請求方式中,除了URL和路徑傳參外,還可以通過請求頭進行參數傳遞,可以增加信息的安全性和隱私性。例如:

http://localhost:8080/user
X-Token: abc
X-User-Id: 12345

在Controller中通過@RequestHeader註解接收參數:

@RestController
public class UserController {
    @GetMapping("/user")
    public String getUser(@RequestHeader("X-Token") String token, @RequestHeader("X-User-Id") Integer userId) {
        return "token: " + token + ", userId: " + userId;
    }
}

通過@RequestHeader註解可以獲取請求頭中指定的參數,並作為方法的參數使用。

四、請求體傳參

除了以上三種傳參方式,還可以在Get請求方式中使用請求體進行參數傳遞。但是需要特別注意,Get請求方式中,並不是所有的瀏覽器都支持請求體傳參。這種方式一般用於前端使用ajax等技術進行請求,在後端Controller中通過@RequestBody註解接收參數。

$.ajax({
    url: "/user",
    type: "GET",
    contentType: "application/json",
    data: JSON.Stringify({id: 123, name: "張三"}),
    success: function(result){
        console.log(result);
    }
});

在Controller中通過@RequestBody註解接收參數:

@RestController
public class UserController {
    @GetMapping("/user")
    public String getUser(@RequestBody User user) {
        return "id: " + user.getId() + ", name: " + user.getName();
    }
}

需要注意的是,由於Get請求並不是通過請求體進行傳參的標準方式,因此需要使用contentType指定請求類型為application/json,同時在請求數據中需要將參數序列化為JSON字符串。

代碼示例:

1、URL傳參

@RestController
public class UserController {
    @GetMapping("/user")
    public String getUser(@RequestParam("id") Integer id, @RequestParam("name") String name) {
        return "id: " + id + ", name: " + name;
    }
}

2、路徑傳參

@RestController
public class UserController {
    @GetMapping("/user/{id}")
    public String getUserById(@PathVariable("id") Integer id) {
        return "id: " + id;
    }
}

3、請求頭傳參

@RestController
public class UserController {
    @GetMapping("/user")
    public String getUser(@RequestHeader("X-Token") String token, @RequestHeader("X-User-Id") Integer userId) {
        return "token: " + token + ", userId: " + userId;
    }
}

4、請求體傳參

前端發送請求:

$.ajax({
    url: "/user",
    type: "GET",
    contentType: "application/json",
    data: JSON.Stringify({id: 123, name: "張三"}),
    success: function(result){
        console.log(result);
    }
});

在Controller中使用@RequestBody註解接收參數:

@RestController
public class UserController {
    @GetMapping("/user")
    public String getUser(@RequestBody User user) {
        return "id: " + user.getId() + ", name: " + user.getName();
    }
}

以上為四種Get請求方式下的參數傳遞方式,開發者可以根據具體業務場景進行選擇,更加深入的了解和使用SpringBoot框架,可以讓我們的開發效率更加高效。

原創文章,作者:CORLT,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/374162.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
CORLT的頭像CORLT
上一篇 2025-04-27 15:27
下一篇 2025-04-27 15:27

相關推薦

  • 從ga角度解讀springboot

    springboot作為目前廣受歡迎的Java開發框架,其中的ga機制在整個開發過程中起着至關重要的作用。 一、ga是什麼 ga即Group Artifacts的縮寫,它是Mave…

    編程 2025-04-29
  • Python緩存圖片的處理方式

    本文將從多個方面詳細闡述Python緩存圖片的處理方式,包括緩存原理、緩存框架、緩存策略、緩存更新和緩存清除等方面。 一、緩存原理 緩存是一種提高應用程序性能的技術,在網絡應用中流…

    編程 2025-04-29
  • Python在線編輯器的優勢與實現方式

    Python在線編輯器是Python語言愛好者的重要工具之一,它可以讓用戶方便快捷的在線編碼、調試和分享代碼,無需在本地安裝Python環境。本文將從多個方面對Python在線編輯…

    編程 2025-04-28
  • Elasticsearch API使用用法介紹-get /_cat/allocation

    Elasticsearch是一個分佈式的開源搜索和分析引擎,支持全文檢索和數據分析,並且可伸縮到上百個節點,處理PB級結構化或非結構化數據。get /_cat/allocation…

    編程 2025-04-28
  • Java表單提交方式

    Java表單提交有兩種方式,分別是get和post。下面我們將從以下幾個方面詳細闡述這兩種方式。 一、get方式 1、什麼是get方式 在get方式下,表單的數據會以查詢字符串的形…

    編程 2025-04-27
  • 用Pythonic的方式編寫高效代碼

    Pythonic是一種編程哲學,它強調Python編程風格的簡單、清晰、優雅和明確。Python應該描述為一種語言而不是一種編程語言。Pythonic的編程方式不僅可以使我們在編碼…

    編程 2025-04-27
  • Java多版本支持實現方式

    本文將從以下幾個方面闡述如何實現Java多版本支持,並給出可行的代碼示例。 一、多版本Java環境概述 Java是一門跨平台的編程語言,但是在不同的應用場景下,可能需要使用不同版本…

    編程 2025-04-27
  • Python獲取APP數據的多種方式

    如果您需要對APP進行分析、數據採集、監控或者自動化測試,那麼您一定需要獲取APP的數據。本文將會介紹一些Python獲取APP數據的方式。 一、使用ADB工具獲取APP數據 AD…

    編程 2025-04-27
  • Python中用空格隔開的使用方式

    Python是一種高級編程語言,非常流行,因為它有很多有用的功能。其中一個有用的功能是用空格隔開代碼。在本文中,我們將從多個方面討論Python中如何使用空格隔開代碼。 一、Pyt…

    編程 2025-04-27
  • HTTP請求方式的選擇:POST還是GET?

    對於使用xxl-job進行任務調度的開發者,通常需要發送HTTP請求來執行一些任務。但是在發送請求時,我們總是會遇到一個問題:是使用POST還是GET?下面將從多個方面對這個問題進…

    編程 2025-04-27

發表回復

登錄後才能評論