在熟悉AWS之后,这个概念性问题已经浮现在我脑海中。一般来说,我很好奇是否有最佳实践和/或惯例,以便API提供商何时应将端点分组到一个新的独立API中(而不是将端点集中到现有API中)。
为了说明,我们假设服务代表Manufacturers
创建数字钱包优惠券,由Consumers
在Mom & pop stores
批量兑换 - 有些服务可能参与的活动包括:
Manufacturers
接收数据(以构建数字优惠券)Consumers
提供查找和下载优惠券的机制Mom & pop stores’
付款终端提供验证优惠券的方法而且,顺便说一句,服务也可能需要......
因此吗
使用AWS,可以很容易地模块化一个人的后端(例如,拥有数据库的RDS实例,为微服务运行一些lambda函数等)并对其进行负载均衡。 API Gateway增加了这一点,因为每个端点都可以指向不同的东西(lambda函数,通过HTTP代理的EC2实例等)。
因此,一种方法可能是在AWS API Gateway中定义 一个 API,并在其下面包含所有端点:
API: “Master”
/coupon
POST = create a new one (for Manufacturers)
PUT = update an existing one (for Manufacturers)
GET = retrieve one (for Consumers)
/coupon/validate
POST = verify it’s still valid (Mom & Pop store use-case)
/apple-wallet
/{version}
/passes
... per documentation
/devices
... per documentation
但服务更有意义的是削减/apple-wallet
端点并创建一个全新的独立API吗?
或者,如果服务要发布供公共开发人员使用的文档,将Manufacturer
- 相关端点完全转移到单独的API中是否有意义?
由于AWS通过API网关将分发端点的工作变得如此简单,是否应该(或不应该)何时采用标准做法?
感谢您的任何见解/意见!
答案 0 :(得分:3)
我的两分钱。 考虑您的API的最终用户。每个API集都有不同的开发人员最终用户。
您理想的情况是每位开发者最终用户只能看到与他们相关的API 。因此,您应该根据最终用户将API分成不同的网关
在理论情境中,您描述:
将两者分开也应该为您带来安全方面的好处,因为您可以保护您的制造商API的知识免受可能试图破解它的用户的影响