考虑以下请求
GET http://localhost:8080/app/{id}/details;id=some-value-here
在上面的请求中,有一个名为 id
的模板样式参数和一个矩阵类型参数名称/值作为id=some-value-here
。
在处理此类请求时,API 行为应该是什么?
- 通过处理重复的参数键像往常一样提供请求? 因为即使参数键相同,它们的路径也不同。一个是模板样式,另一个是矩阵样式。
- 拒绝请求说参数名称存在冲突?
- 是否有任何指导此类冲突解决的 HTTP RFC?
在 RFC 中找到了答案。
根据 URI 模板的 RFC 6570 第 3.2.1 节。变量展开说如下(摘录(
如果变量在表达式中或表达式中多次出现URI 模板的多个表达式,该变量的值必须在整个扩展过程中保持静态(即变量必须具有相同的值才能计算每个变量扩展(。
这意味着,处理请求,但保留id
在整个 URI 扩展过程中遇到的任何第一个值。
例如
GET http://localhost:8080/app/{id}/details;id=some-value-here
如果id
为 1,则扩展应为
GET http://localhost:8080/app/1/details;id=1