RESTful服务和混合数据响应

时间:2015-04-09 14:13:14

标签: web-services rest url url-routing restful-url

有服务器和客户端。客户需要从服务器获取这些商店的商店和折扣列表。

我有两种方式:

  1. 起初我得到所有商店 e.q. GET http://myservice.com/shops
    然后我在那些商店获得折扣 e.q. GET http://myservice.com/shops/discounts
    (两个请求)
  2. 全力以赴(商店和折扣)
    e.q. GET http://myservice.com/shops_and_discounts
    (一个请求)
  3. 第二个决定是否与RESTful服务的原则相矛盾? 或者最好使用第一种方式?
    THX。

1 个答案:

答案 0 :(得分:0)

REST强调组件之间的统一接口,当它驱使您为您的问题实施更通用的解决方案时,它是其优势之一。这两种方法都没有任何固有的错误,但是你创造了一个特殊的案例,一见钟情并不明显,需要明确的文档。

我用于该问题的解决方案是我称之为缩放协议。理想情况下,选项1应该足够了,如果客户端必须发出两个请求,那就这样吧。但是,您甚至可能更深层次地嵌套其他资源,并且任何解决方案 - 多个请求或聚合资源明显 - 都不会很好地扩展。

我们的想法是拥有一个zoom数字参数,该参数包含父表示中的相关子资源,并根据需要提供多个级别。例如,/shops返回所有商店。 /shops?zoom=1返回所有商店,包含所有折扣和嵌入的任何其他直接子项资源。 /shops?zoom=2会做同样的事情并将zoom=1应用于子资源本身,嵌入直接子女的折扣等等。

此方法的优点是您可以使其成为标准,客户可以在任何需要的地方使用它。