Java REST:处理请求中同名的矩阵样式和模板样式参数
考虑以下请求Java REST:处理请求中同名的矩阵样式和模板样式参数,java,spring,rest,web-services,django-rest-framework,Java,Spring,Rest,Web Services,Django Rest Framework,考虑以下请求 GET http://localhost:8080/app/{id}/details;id=some-value-here 在上述请求中,有一个名为id的模板样式参数和一个名为id=some value的矩阵类型参数名称/值 在服务这些请求时,API的行为应该是什么 是否通过处理重复的参数键来照常提供请求?因为即使参数键相同,它们的路径也不同。一种是模板式,另一种是矩阵式 拒绝表示参数名称存在冲突的请求 是否有指导此类冲突解决的HTTP RFC 在RFC中找到了答案 具体
GET http://localhost:8080/app/{id}/details;id=some-value-here
在上述请求中,有一个名为id
的模板样式参数和一个名为id=some value的矩阵类型参数名称/值
在服务这些请求时,API的行为应该是什么
- 是否通过处理重复的参数键来照常提供请求?因为即使参数键相同,它们的路径也不同。一种是模板式,另一种是矩阵式
- 拒绝表示参数名称存在冲突的请求
- 是否有指导此类冲突解决的HTTP RFC
在RFC中找到了答案
具体按照URI模板。变量展开说明如下(摘录)
如果变量在表达式中或在
URI模板的多个表达式,该变量的值
在整个扩展过程中必须保持静态(即
为了计算每个变量,变量必须具有相同的值
扩展)
这意味着,处理请求,但保留在整个URI扩展过程中遇到的
id
的任何第一个值
比如说,
GET http://localhost:8080/app/{id}/details;id=some-value-here
如果id
为1,则扩展应为
GET http://localhost:8080/app/1/details;id=1
在RFC中找到了答案
具体按照URI模板。变量展开说明如下(摘录)
如果变量在表达式中或在
URI模板的多个表达式,该变量的值
在整个扩展过程中必须保持静态(即
为了计算每个变量,变量必须具有相同的值
扩展)
这意味着,处理请求,但保留在整个URI扩展过程中遇到的id
的任何第一个值
比如说,
GET http://localhost:8080/app/{id}/details;id=some-value-here
如果id
为1,则扩展应为
GET http://localhost:8080/app/1/details;id=1