我是服务器端 Web 开发的新手,最近我阅读了很多关于实现 RESTful API 的内容。我仍然坚持的 REST API 的一个方面是如何构建 URI 层次结构,以识别客户端可以与之交互的资源。具体来说,我一直在决定层次结构的详细程度以及在资源由其他资源类型组成的情况下该怎么做。
这是一个例子,希望能说明我的意思。想象一下,我们有一个 Web 服务,可以让用户从其他用户那里购买产品。所以在这个简单的例子中,有两个顶级资源users和products。下面是我开始构建 URI 层次结构的方法,
对于用户:
/users
/{id}
/location
/about
/name
/seller_rating
/bought
/sold
对于产品:
/products
/{id}
/name
/category
/description
/keywords
/buyer
/seller
在这两种情况下,每个层次结构中的对象都引用另一个层次结构中对象的子集。例如/users/{id}/bought
,某个用户已购买的产品列表,它是/products
. 此外,/products/{id}/seller
引用销售特定产品的用户。
由于这些 URI 引用其他对象或其他对象的子集,API 是否应该支持这样的事情:/users/{id}/bought/id/description
和/products/{id}/buyer/location
?因为如果支持这些类型的 URI,有什么办法阻止这样的事情/users/{id}/bought/{id}/buyer/bought/{id}/seller/name
,或者同样令人费解的事情?此外,在这种情况下,由于服务器中的路由器必须解释任意长度的 URI,您将如何处理路由?