相关疑难解决方法(0)

URL矩阵参数与请求参数

我想知道是否在我的URL中使用矩阵或查询参数.我发现对该主题的旧讨论并不令人满意.

例子

乍一看,矩阵参数似乎只有优势:

  • 更具可读性
  • 不需要在XML文档中编码和解码"&"
  • 带"?"的网址 在很多情况下都没有缓存; 具有矩阵参数的URL被缓存
  • 矩阵参数可以出现在路径中的任何位置,并且不限于其末尾
  • 矩阵参数可以有多个值: paramA=val1,val2

但也有缺点:

  • 只有少数像JAX-RS这样的框架支持矩阵参数
  • 当浏览器通过GET提交表单时,params成为查询参数.因此它最终会出现两种相同任务的参数.为了不混淆REST服务的用户并限制服务开发人员的工作量,在这个领域中使用始终查询参数会更容易.

由于服务的开发人员可以选择支持矩阵参数的框架,因此唯一的缺点是浏览器默认创建查询参数.

还有其他缺点吗?你会怎么做?

parameters rest url http jax-rs

170
推荐指数
3
解决办法
6万
查看次数

具有两个独立主键的实体的RESTful API行为

我有以下实体:

<car>
    <carID>7</carID>
    <...>...</...>
    <externalCarID>23890212</externalCarID>
</car>
Run Code Online (Sandbox Code Playgroud)

现在的问题是,carIDexternalCarID是用于通过/不同系统都独立主键,它应该是可能的API客户端访问一个car与两个实体carIDXOR的externalCarID

这两个键都是整数,并且使用不交集:

carID(7) != externalCarID(7)
Run Code Online (Sandbox Code Playgroud)


我想到了以下解决方案:

  1. 使用/restapi/car/7和访问/restapi/externalcar/23890212
  2. 使用参数,例如like /restapi/car/7?type=regular/restapi/car/23890212?type=ext
  3. 将信息发送到标头中的某处 - 但是在哪里?

一些技巧来解决这个问题或对我的解决方案提供反馈,最好参考REST / HTTP规范,这将是很棒的!

有关主键的背景:

假设我们的发票系统需要carID和母公司控制系统需要externalCarID。我一点都不喜欢它,但是它是一个正在运行的系统,我现在没有办法对其进行更改。

rest restful-url restful-architecture

5
推荐指数
2
解决办法
1800
查看次数