REST:在请求中处理具有相同名称的矩阵样式和模板样式参数

时间:2019-02-13 13:43:32

标签: java spring rest web-services django-rest-framework

考虑以下请求

   GET http://localhost:8080/app/{id}/details;id=some-value-here

在上述请求中,有一个名为id的模板样式参数和一个名为id=some-value-here的矩阵类型参数名称/值。

在处理此类请求时,API行为应该是什么?

  • 通过处理重复的参数密钥来照常服务请求吗?因为即使参数键相同,但它们的路径也不同。一种是模板样式,另一种是矩阵样式。
  • 拒绝要求说参数名称存在冲突的请求吗?
  • 是否有任何HTTP RFC指导解决此类冲突?

1 个答案:

答案 0 :(得分:0)

在RFC中找到答案。

根据URI模板的RFC 6570,特别是section 3.2.1。变量展开表示以下内容(节选)

  

如果变量在表达式中或表达式中多次出现   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