URL 規范
- 不用大寫;(強制)
- 用中杠-不用下杠_;(強制)
- 參數列表要encode,編碼使用utf-8;(強制)
- URI中的名詞表示資源集合,使用復數形式。(建議)
- 增加版本號(建議)
URI中統一使用小寫字母
根據RFC3986定義,URI是對大小寫敏感的,所以為了避免歧義,我們盡量用小寫字符。但主機名(Host)和scheme(協議名稱:http/ftp/...)對大小寫是不敏感的。
URI中盡量使用連字符"-"代替下划線"_"的使用
連字符"-"一般用來分割URI中出現的字符串(單詞),來提高URI的可讀性,例如:
http://api.example.restapi.org/blogs/mark-masse/entries/this-is-my-first-post
使用下划線"_"來分割字符串(單詞)可能會和鏈接的樣式沖突重疊,而影響閱讀性。但實際上,"-"和"_"對URL中字符串的分割語意上還是有些差異的:"-"分割的字符串(單詞)一般各自都具有獨立的含義,可參見上面的例子。而"_"一般用於對一個整體含義的字符串做了層級的分割,方便閱讀,例如你想在URL中體現一個ip地址的信息:210_110_25_88 .
URL增加版本號
根據項目的更新,原來的URL可能被多個項目所使用,需要兼容原有系統的情況下,支持新業務。
提供給內部系統使用的api,建議使用`/api/v1/`開頭, 提供給前端APP使用的api,建議使用`/web-api/v1/`開頭
/api/v1/loan
/web-api/v1/loan
資源集合 vs 單個資源
URI表示資源的兩種方式:資源集合、單個資源。
資源集合:
/zoos //所有動物園 /zoos/1/animals //id為1的動物園中的所有動物
單個資源:
/zoos/1 //id為1的動物園
避免層級過深的URI
/在url中表達層級,用於按實體關聯關系進行對象導航,一般根據id導航。
過深的導航容易導致url膨脹,不易維護,如 GET /zoos/1/areas/3/animals/4,盡量使用查詢參數代替路徑中的實體導航,如GET /animals?zoo=1&area=3;