矩阵URI(Matrix URIs)
矩阵URI(Matrix URIs) 是Tim Berners-Lee于1996年提出的一种新的Web体系结构,但遗憾的是,到目前为止并未成为 Web标准。
介绍
按照矩阵URI的定义,将URI中的斜杠(/
)看成是层次分隔符,每个层次都可以使用属性作为条件,条件格式为name=value
的形式,不同属性之间使用分号(;
)分隔,如果没有属性,允许使用默认值,并且相同属性只能出现一次(TBL介绍中不推荐同一属性出现多次,因为会导致混乱;但如果可以做到识别多个相同属性,也是允许出现多次),属性之间保持无序性(color=red;size=large
和size=large;color=red
是等同的)
例子
例如我们需要定义查询指定用户在某一天的所有图片的URI,使用查询参数:
1 | http://example.com/user/images?userId=1&date=20190930 |
或是REST风格:
1 | http://example.com/user/1/images/20190930 |
而使用矩阵参数:
1 | http://example.com/user;userId=1/images;date=20190930 |
个人认为相比传统的查询参数或是REST风格URI,矩阵URI有着更好的可读性;相比查询参数,矩阵URI没有转义的问题(?
和&
);相比于REST风格,矩阵URI没有缺省参数的问题。
但是矩阵URI并非Web规范,所以并非所有框架都支持矩阵URI,因而查询参数URI有着更好的支持并且有更广泛的认可。
在SpringMVC中使用
配置
Java Config
1 |
|
Xml
1 | <mvc:annotation-driven enable-matrix-variables="true"/> |
测试类
1 |
|
访问地址:
1 | http://localhost:8081/user/image/123;p=123 |
具体使用介绍可以看Spring官方文档
参考
Matrix URIs - Ideas about Web Architecture
URL matrix parameters vs request parameters
Matrix Variables In SpringMVC