java中4種API參數(shù)傳遞方式統(tǒng)一說(shuō)明
1. 概述
在 Web API 設(shè)計(jì)中,客戶(hù)端需要通過(guò)多種方式向服務(wù)端傳遞參數(shù)。根據(jù) HTTP 協(xié)議和 RESTful 風(fēng)格,常見(jiàn)的參數(shù)傳遞方式包括:Query Parameters、Path Parameters、Body Parameters 和 Header Parameters。本規(guī)范文檔對(duì)各類(lèi)參數(shù)的用途、特點(diǎn)與使用場(chǎng)景進(jìn)行統(tǒng)一說(shuō)明。
2. 參數(shù)傳遞方式分類(lèi)
2.1 Query Parameters(查詢(xún)參數(shù))
位置:
附加在 URL 的 ? 之后,以 key=value 形式出現(xiàn),多個(gè)參數(shù)使用 & 分隔。
示例:
GET /api/dish?page=1&pageSize=10&name=魚(yú)香肉絲
特點(diǎn):
參數(shù)直接暴露在 URL 上。
適用于篩選、分頁(yè)、搜索等查詢(xún)類(lèi)條件。
一般用于
GET請(qǐng)求(但其他方法也可以使用)。參數(shù)長(zhǎng)度受 URL 長(zhǎng)度限制,不適合傳輸大數(shù)據(jù)。
典型場(chǎng)景:
列表分頁(yè)
條件檢索
排序字段傳遞
2.2 Path Parameters(路徑參數(shù))
位置:
作為 URL 路徑的一部分,用于定位資源。
示例:
GET /api/dish/10
特點(diǎn):
表達(dá)資源層級(jí)結(jié)構(gòu),更符合 RESTful 風(fēng)格。
參數(shù)不可省略,通常代表唯一性標(biāo)識(shí)(如 ID)。
僅在 URL 中傳遞,不出現(xiàn)在請(qǐng)求體中。
典型場(chǎng)景:
獲取某條記錄(如 /user/1)
刪除某條記錄
查詢(xún)某個(gè)資源的子資源
2.3 Body Parameters(請(qǐng)求體參數(shù))
位置:
放置在 HTTP 請(qǐng)求體(Request Body)中。
常見(jiàn)數(shù)據(jù)格式:
JSON(最常用)
application/x-www-form-urlencoded(傳統(tǒng)表單格式)
multipart/form-data(文件上傳)
XML(現(xiàn)較少使用)
binary(二進(jìn)制,如圖片、視頻)
示例(JSON):
{
"name": "魚(yú)香肉絲",
"price": 20,
"status": 1
}特點(diǎn):
參數(shù)不暴露在 URL 上,適合傳輸復(fù)雜對(duì)象。
不受 URL 長(zhǎng)度限制。
主要用于
POST、PUT、PATCH請(qǐng)求。
典型場(chǎng)景:
新增資源
修改資源
批量提交數(shù)據(jù)
上傳文件
2.4 Header Parameters(請(qǐng)求頭參數(shù))
位置:
寫(xiě)入 HTTP Header 中。
示例:
Authorization: Bearer eyJhbGciOi... Content-Type: application/json token: xxxxxxx
特點(diǎn):
參數(shù)不顯示在 URL 和 Body 中。
主要用于傳遞認(rèn)證信息、格式聲明等元數(shù)據(jù)。
不推薦用于傳遞業(yè)務(wù)數(shù)據(jù)。
典型場(chǎng)景:
JWT Token 身份認(rèn)證
設(shè)置 Content-Type
API 版本信息
語(yǔ)言設(shè)置(Accept-Language)
3. 非主流但常見(jiàn)的方式
3.1 Cookies
用于在瀏覽器環(huán)境中自動(dòng)攜帶狀態(tài)信息,常見(jiàn)于登錄狀態(tài)維持。
特點(diǎn):
瀏覽器自動(dòng)附帶,無(wú)需手動(dòng)傳遞。
后端可讀取 Cookie 獲取用戶(hù)憑證或偏好設(shè)置。
3.2 URL Fragment(片段標(biāo)識(shí)符)
例如 #section1
不參與 HTTP 請(qǐng)求,在 API 中不使用,僅用于前端頁(yè)面定位。
4. 四類(lèi)主要參數(shù)的對(duì)比
| 傳參方式 | 出現(xiàn)位置 | 是否可見(jiàn) | 典型場(chǎng)景 | 限制 |
|---|---|---|---|---|
| Query Params | URL ? 后 | 是 | 搜索、分頁(yè)、查詢(xún)條件 | URL 長(zhǎng)度限制 |
| Path Params | URL 路徑 | 是 | 定位資源(如 ID) | 必須存在,類(lèi)型簡(jiǎn)單 |
| Body Params | 請(qǐng)求體 | 否 | 新增、修改、上傳 | 僅 POST/PUT 等支持 |
| Header Params | HTTP Header | 否 | 認(rèn)證、元信息 | 不適合業(yè)務(wù)數(shù)據(jù) |
5. 使用建議(最佳實(shí)踐)
查詢(xún)參數(shù)使用 Query。如分頁(yè) page、pageSize。
資源標(biāo)識(shí)使用 Path。如 /user/{id}。
新增/修改使用 Body(JSON)。
認(rèn)證信息使用 Header(如 Authorization)。
避免在 Header 中傳遞業(yè)務(wù)字段。
避免在 Query 或 Path 中傳輸過(guò)多復(fù)雜數(shù)據(jù)。
6. 總結(jié)
API 參數(shù)傳遞主要包含四種方式:Query、Path、Body 和 Header。它們各自適用于不同場(chǎng)景,合理選擇傳參方式有助于接口保持語(yǔ)義清晰、結(jié)構(gòu)規(guī)范、易于維護(hù)。
到此這篇關(guān)于java中4種API參數(shù)傳遞方式統(tǒng)一說(shuō)明的文章就介紹到這了,更多相關(guān)java API參數(shù)傳遞方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring @Environment典型用法實(shí)戰(zhàn)案例
在使用Spring框架進(jìn)行Java開(kāi)發(fā)時(shí),我們經(jīng)常使用@Value和@Environment注解來(lái)注入配置文件中的值,這篇文章主要介紹了Spring @Environment典型用法的相關(guān)資料,需要的朋友可以參考下2025-06-06
JavaFX實(shí)現(xiàn)簡(jiǎn)單日歷效果
這篇文章主要為大家詳細(xì)介紹了JavaFX實(shí)現(xiàn)簡(jiǎn)單日歷效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
Java 如何通過(guò)Magic 魔數(shù)獲取文件類(lèi)型
魔數(shù)有很多種定義,這里我們討論的主要是在編程領(lǐng)域的定義,文件的起始幾個(gè)字節(jié)的內(nèi)容是固定的,本文給大家介紹Java Magic 魔數(shù)獲取文件類(lèi)型的相關(guān)知識(shí),感興趣的朋友一起看看吧2023-11-11
java 利用反射獲取內(nèi)部類(lèi)靜態(tài)成員變量的值操作
這篇文章主要介紹了java 利用反射獲取內(nèi)部類(lèi)靜態(tài)成員變量的值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
SpringBoot集成Hutool防止XSS攻擊的兩種解決方法
XSS漏洞是生產(chǎn)上比較常見(jiàn)的問(wèn)題,本文主要介紹了SpringBoot集成Hutool防止XSS攻擊的兩種解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-04-04
Spring Boot 對(duì)接深度求索接口實(shí)現(xiàn)知識(shí)問(wèn)答功能
本文詳細(xì)介紹了如何使用 Spring Boot 對(duì)接深度求索接口,實(shí)現(xiàn)知識(shí)問(wèn)答功能,通過(guò)整合深度求索 API,我們可以輕松地在 Spring Boot 項(xiàng)目中實(shí)現(xiàn)智能問(wèn)答功能,2025-02-02
Java實(shí)現(xiàn)經(jīng)典角色扮演偵探游戲游戲的示例代碼
這篇文章主要介紹了如何利用Java語(yǔ)言自制一個(gè)偵探文字游戲—《角色扮演偵探》,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編學(xué)習(xí)一下2022-02-02
Spring Security跳轉(zhuǎn)頁(yè)面失敗問(wèn)題解決
這篇文章主要介紹了Spring Security跳轉(zhuǎn)頁(yè)面失敗問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01

