首页 > 解决方案 > 在 REST API 中,我可以在路径和查询字符串参数之间拆分资源标识符吗?

问题描述

我的 REST API 中的 REST 资源是 Account。帐户 ID 是由 cid(客户 ID)、SalesOrg 和 CompanyCode 组成的唯一组合键。如果我想在路径参数中包含组合 ID,我意识到一种方法是在构成我的组合 ID 的不同元素之间使用分隔符。类似 123~BSD~11,或者可能是 cid~123^salesOrg~GBS^companycode~11。相反,我想在路径参数中使用带有 cid 的 REST URI,在查询字符串中使用 SalesOrg 和 CompanyCode。像下面这样的东西,

/v1/Accounts/{cid}/contacts?SalesOrg=BSD&CompanyCode=11

因此,我建议在路径参数中使用我的组合 ID 的组成部分之一,并在查询字符串中使用组合 ID 的其余组成部分。这是一种有效的 REST 架构实践吗?如果不是,在什么情况下我的建议可以接受?

标签: rest

解决方案


在 REST API 中,我可以在路径和查询字符串参数之间拆分资源标识符吗?

是 - URI 是一个标识符;从客户端和中间组件的角度来看,它是不透明的,这意味着服务器可以自行决定将其选择的任何数据编码到 URI 中并供其专有使用。

路径查询都包含在 HTTP 请求的请求行中,因此您可以选择在哪些部分中包含哪些数据。

将服务器需要的信息编码到片段中不会有效率,因为该信息根本包含在 HTTP 请求中。

我建议在路径参数中使用我的组合 ID 的组成部分之一,并在查询字符串中使用组合 ID 的其余组成部分。这是一种有效的 REST 架构实践吗?

完全可以接受。


推荐阅读