【发布时间】:2019-07-11 20:09:30
【问题描述】:
让我们在我的 REST API 中使用以下资源:
GET `http://api/v1/user/users/{id}`
在正常情况下我会这样使用:
GET `http://api/v1/user/users/aabc`
aabc 是用户 ID。
但是,有时我不得不设计我的 REST API,以便通过 ID 传递一些额外的信息。例如:
GET `http://api/v1/user/users/customer:1`
customer:1 表示我正在使用客户域中的 id 来查找用户,并且该 id 为 1。
我现在有一个标识符是多个键(复合键)的场景。例如:
GET `http://api/v1/user/users/customer:1;type:agent`
我的问题:在上面的 URL 中,customer:1 和 type:agent 之间的分隔符应该使用什么?
根据https://www.ietf.org/rfc/rfc3986.txt,我认为分号是不允许的。
【问题讨论】:
-
为什么不使用查询参数,例如
/v1/users?customerId=1&type=agent。/user/users似乎很可疑,自己编造代表通常不是一个好主意。 -
尝试对您的 URL 进行编码。
-
我在考虑这个问题,我认为这个问题更多是关于当你的资源 id 是复合键时该怎么做