什么应该定义RESTful Web服务的范围?

时间:2015-09-03 21:31:36

标签: web-services rest

我有一个购买和销售优惠券的网络系统,通过RESTful网络服务提供服务。有2个客户端移动应用程序使用此服务,一个是允许用户浏览和购买优惠券,另一个是商家发布优惠券。它感觉就像一个Web服务,因为它们在相同的数据上运行,但是我想知道这是否是定义Web服务范围的正确标准。我觉得也许它应该更多地与“服务特定类型的客户端”有关,因为查询数据的方式和返回方式是不同的,我怀疑是否正确?

所以这让我想知道应该定义给定Web服务的范围?这不应该是一个固执己问的问题,因为对于应该定义给定Web服务的范围和内聚性的理由,它应该具有相当具体的特性。

更重要的是(对我来说!),我应该在我的实例中做些什么?如果在我的示例中它实际上应该是2个Web服务,那么在由同一个提供者提供服务时区分它们的正确方法是什么?从不同的子域服务每个?

user.xxx.commerchant.xxx.com

或者根据不同的目录将它们分开来认为是非RESTful的:

api.xxx.com/userapi.xxx.com/merchant

后者将涉及购买通配符SSL证书,但遗憾的是该费用!

非常感谢有关如何不去挖洞的一些保证=)

1 个答案:

答案 0 :(得分:0)

  

有2个客户端移动应用程序使用此服务,一个是允许用户浏览和购买优惠券,另一个是商家发布优惠券。感觉就像一个单一的Web服务,因为它们在相同的数据上运行,但是我想知道这是否是定义Web服务范围的正确标准。我觉得也许它应该更多地与“服务特定类型的客户端”有关,因为查询数据的方式和返回方式是不同的,我怀疑是否正确?

粗体部分应该告诉你答案。

如果你将网络服务拆分为2,你就会面临两个主要问题,即

  • 重复数据。在2个不同的地方为2项服务提供相同的数据。
  • 需要在服务之间同步数据。这可能是可行的,但实际上并不是你想要花时间的东西。

因此,我会说多个应用程序使用的一个“堆”数据应该只放在一个Web服务中。

无论您使用user.api.xxx.com还是api.xxx.com/user都无关紧要。它只定义了服务的根端点,就REST来说并不重要。

  

数据仍将驻留在同一个数据库中,同一系统中的单个位置,因此不会有任何重复。我只是为同一个后端系统提供两种不同的Web服务(即接口),以便为不同类型的客户端提供不同的数据服务。

我仍然会使用一项服务。不同类型的客户(常规用户和商家)可以对自己进行身份验证,以告知服务他们被授权(=允许)阅读和/或操作哪些资源。

这是webservices中的常见做法。相同数据但具有不同功能的不同人员访问该数据。为此进行了授权。