在我们的系统中,我们拥有包含项目的帐户。一个项目总是与一个帐户关联,但在系统中也具有全球唯一的ID。有时只需知道其ID就可以使用该项目。RESTful API创建全球唯一资源
允许从外部所有者(账户)访问下级资源(项目)是不正确的?换句话说,拥有2个URI到同一个资源是错误的吗?这是一个有点棘手解释那么这里有一个例子:
POST /inventory/accountId
#Request Body contains new item
#Response body contains new item's id
GET|PUT|DELETE /inventory/accountId/guid #obviously works and makes sense
GET|PUT|DELETE /inventory/guid #does this make sense?
也许我应该重新思考自己的资源布局,而不是使用帐户创建项目,而是把帐户作为该项目的查询字符串参数或领域?
POST /inventory
# Request body contains item w/ account name set on it
GET|POST|DELETE /inventory/uuid #makes sense
GET|POST|DELETE /inventory/accountId/uuid #not allowed
我认为重定向是最有意义的,如果我要支持多个URI的。考虑一下之后,我会试着避免这一点。为了在帐户下创建项目,我忘了我可以使用Location标头来指示创建资源的URI,这样可以消除我最担心的问题。 –