有产品和产品评论。 所以,我可以得到这样的产品清单......
GET /products
我也可以获取一个产品或评论或这样的产品......
GET /products/{productID}
GET /products/{productID}/reviews
那些很清楚。但当我想得到我写的所有评论时,问题就出现了。 我可以像这样创造uri ..
1. GET /products/reviews?author=myId
或
2. GET /reviews?author=myID
然而,第一个问题来自{productID}
和评论之间的冲突。
下一个问题来自关系产品和评论,因为评论应该根据层次结构在产品之下。
如何获得我使用RESTful
API撰写的所有评论?
答案 0 :(得分:0)
通常路线就像这样
GET / products /:product_id / reviews?author = myID
所以参数是 - product_id - 作者
通过这种方式,您将获得某个产品和作者的所有评论。
但是,如果您想要所有评论,那么这是正确的:
获取/评论?author = myID
答案 1 :(得分:0)
要获取给定作者为所有产品撰写的所有评论,请使用RESTful方式执行此操作
GET / authors / {authorId} / reviews
如果您想获得给定作者为单产品撰写的所有评论,那么您可以使用
(a)GET / authors / {authorId} / products / {productId} / reviews
我喜欢这种方法,而不是在查询字符串中指定productId或authorId。作者包含产品,产品包含评论,因此这是一个很好的RESTful URL。但是,如果要使用查询字符串,则可以使用以下任一方法:
(b)GET / products / {productId} / reviews?authorId = {authorId}
(c)GET / authors / {authorId} / reviews?productId = {productId}
但我个人更喜欢选项(a)而不是选项(b)或(c)。我认为它以更清洁的方式描述了对象层次结构。
答案 2 :(得分:0)
我想使用第二个如果我是你,由于平坦的URI通常比那些分层短URI是更容易的路线:它是容易意外输错URI模板
。所以使用
GET /reviews?author={myID}
GET /reviews?product={productID}
也可以。 (如果您有不同的评论类型,可能最好使用product-reviews
而不是reviews
。)
为了避免误解,REST没有URI结构约束,这些是实现细节,因此您可以同时使用您提出的URI。您应该记录它们并应用HATEOAS约束。