有服务器和客户端。客户需要从服务器获取这些商店的商店和折扣列表。
我有两种方式:
GET http://myservice.com/shops
GET http://myservice.com/shops/discounts
GET http://myservice.com/shops_and_discounts
第二个决定是否与RESTful服务的原则相矛盾?
或者最好使用第一种方式?
THX。
答案 0 :(得分:0)
REST强调组件之间的统一接口,当它驱使您为您的问题实施更通用的解决方案时,它是其优势之一。这两种方法都没有任何固有的错误,但是你创造了一个特殊的案例,一见钟情并不明显,需要明确的文档。
我用于该问题的解决方案是我称之为缩放协议。理想情况下,选项1应该足够了,如果客户端必须发出两个请求,那就这样吧。但是,您甚至可能更深层次地嵌套其他资源,并且任何解决方案 - 多个请求或聚合资源明显 - 都不会很好地扩展。
我们的想法是拥有一个zoom
数字参数,该参数包含父表示中的相关子资源,并根据需要提供多个级别。例如,/shops
返回所有商店。 /shops?zoom=1
返回所有商店,包含所有折扣和嵌入的任何其他直接子项资源。 /shops?zoom=2
会做同样的事情并将zoom=1
应用于子资源本身,嵌入直接子女的折扣等等。
此方法的优点是您可以使其成为标准,客户可以在任何需要的地方使用它。