簡體   English   中英

REST 路徑參數與資源路徑沖突?

[英]REST Path params conflicting with resource path?

這個問題是在我使用 JAX-RS 構建后端時出現的,但這確實適用於任何 REST API。

JAX-RS 如何處理可能由於參數路徑變量而發生沖突的路徑? 假設你有

@POST
@Path('createBox/{boxName}')
foo()

@POST
@Path('createBox/small')
bar()

有人想用路徑參數調用第一個端點small 在這種情況下會發生什么? 如果foo()bar()具有不同的參數(可能像@FormParam ),這有助於區分嗎? 如果它們在沒有 arguments 的情況下完全相同怎么辦? 行為是不確定的嗎?

參考: RESTful Java with JAX-RS 2.0, 2nd Edition by Bill Burke

  1. "/customers/{id: .+} <-- getCustomer
  2. "/customers/{id: .+}/address" <-- 獲取地址

優先規則

JAX-RS 規范為匹配 URI 表達式定義了嚴格的排序和優先級規則,並且基於最具體的匹配獲勝算法。

  1. 排序的主鍵是完整 URI 匹配模式中的文字字符數,並且按降序排列(getCustomer 中為 11,getAddress 中為 18)
  2. 排序的輔助鍵是嵌入在模式中的模板表達式的數量——即{id}{id: .+} 這種排序是按降序排列的。
  3. 排序的第三個鍵是非默認模板表達式的數量。 默認模板表達式是一個沒有定義正則表達式的模板,即{id}

你的例子:

bar()獲勝,因為根據規則 1,它具有更多文字字符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM