<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    神奇好望角 The Magical Cape of Good Hope

    庸人不必自擾,智者何需千慮?
    posts - 26, comments - 50, trackbacks - 0, articles - 11
      BlogJava :: 首頁 ::  :: 聯系 :: 聚合  :: 管理

    JAX-RS 從傻逼到牛叉 4:路徑優先級規則

    Posted on 2011-12-07 15:10 蜀山兆孨龘 閱讀(2318) 評論(0)  編輯  收藏 所屬分類: Java EESOA

    籠子大了什么鳥都有。同樣的道理,不論多么細心地設計 URI 結構,在系統復雜到一定程度后,仍然難以避免路徑沖突。為此,JAX-RS 使用一些規則來定義路徑匹配的優先級。

    如果某個請求路徑可以對上多個 URI 匹配模式,那么 JAX-RS 就把可能匹配上的 URI 模式先拼接完整,按照下列規則依次進行比較,直到找出最適合的匹配模式:

    1. 首先,字面字符數量更多的 URI 模式優先。“字面字符”就是寫死的路徑段,不包含路徑分隔符 / 和模板參數。例如 /ms/rest/movie/{id : \\d+} 包含 11 個字面字符。
    2. 其次,模板參數個數最多的 URI 模式優先。例如 /ms/rest/movie/{id : \\d+} 帶一個模板參數。
    3. 最后,含正則表達式的模板參數個數最多的 URI 模式優先。例如 /ms/rest/movie/{id : \\d+} 帶一個含正則表達式的模板參數。

    現在看一個例子。回顧一下,/ms/rest/movie/{id : \\d+} 已經用來根據 ID 獲取電影信息。為了制造麻煩,現在引入 /ms/rest/movie/{title} 來根據電影標題獲取電影信息。先請你猜一猜 /ms/rest/movie/300 代表啥?ID 為 300 的神秘電影,還是我們可愛的勇士?只能跟著規則一條一條地看:

    1. 首先,兩個 URI 匹配模式的字面字符都是 11,下一步。
    2. 其次,兩個 URI 匹配模式都帶一個模板參數,下一步。
    3. 最后,只有 /ms/rest/movie/{id : \\d+} 帶了一個含正則表達式的模板參數,勝利!所以返回 ID 為 300 的片片。

    傳說這三條規則能夠覆蓋 90% 以上的情景。不過我們馬上就能造出一個打破規則的東西:/ms/rest/movie/{title : [ \\w]+}。經過測試,/ms/rest/movie/300 會匹配上 /ms/rest/movie/{id : \\d+}。如何解釋?JAX-RS 規范文檔 3.7.2 定義了完整的匹配規則,對于這兩個簡單的 URI 匹配模式,似乎一直進行到底都無法比較出優先級。莫非有另外的潛規則?或者是 JAX-RS 的實現(參考實現為 Jersey)自行規定?但無論如何,搞出這種怪物本身就是一個設計錯誤,所以也不必去深究原因。

    主站蜘蛛池模板: 欧美a级成人网站免费| 亚洲人成免费电影| 免费国产小视频在线观看| 色偷偷亚洲女人天堂观看欧| 最近免费中文在线视频| 亚洲av色福利天堂| 在线看无码的免费网站| 亚洲成a人片在线观看播放| 最新黄色免费网站| 亚洲日本人成中文字幕| 最近最新的免费中文字幕| 亚洲综合色一区二区三区| 浮力影院第一页小视频国产在线观看免费| 亚洲AV成人噜噜无码网站| 妻子5免费完整高清电视| 亚洲人xxx日本人18| 日本免费一区二区三区最新vr| 丰满亚洲大尺度无码无码专线| 日日操夜夜操免费视频| 免费一级毛suv好看的国产网站| 亚洲欧洲自拍拍偷午夜色无码| 久久国产精品国产自线拍免费| 亚洲综合免费视频| 日韩视频在线免费观看| 亚洲黄片手机免费观看| 久久亚洲精精品中文字幕| 成年在线观看免费人视频草莓| 另类图片亚洲校园小说区| 国产亚洲免费的视频看| 台湾一级毛片永久免费| 全部在线播放免费毛片| 亚洲人成网站在线播放影院在线 | 亚洲一区二区三区四区视频| 最近免费中文字幕4| eeuss影院www天堂免费| 久久亚洲精品成人av无码网站| 全免费一级午夜毛片| 你懂的网址免费国产| 亚洲人成电影网站色www| 亚洲天堂免费在线视频| 国产国产人免费视频成69堂|