服务与API设计及实现全解析
1. 服务设计要点
在服务设计中,有几个关键方面需要考虑,包括URI构建、数据连接、调用深度和API复杂度等。
1.1 URI构建责任
每个服务内部负责构建连接数据的URI,这与传统REST有所不同,因为服务并不存储实际的URI。不过,这种方式便于对在URI中包含版本号的资源进行更新。例如,当用户服务更新版本时,评论服务需要更新其URI生成逻辑。但用户系统的更新应允许评论服务逐步升级,而非要求两者同步更新。
另外,在响应中传递原始ID也有其合理性。对于一些服务,让客户端包含包装数据的业务逻辑,而非仅将原始数据传递给服务,是有意义的。纯RESTful方法假设响应周围不会编写业务逻辑,但在实际应用中,客户端可以在将数据发送到服务之前执行一些基本的数据验证,如创建用户时验证电子邮件地址格式、用户名和密码是否为空等。如果客户端已经包含业务逻辑,那么让其负责URI构建也并非难事。
1.2 数据连接的最高级别
数据连接的最高级别是指在服务调用栈中应该进行连接的位置。以社交Feed阅读器为例,一个返回用户最近五条阅读项的服务,应用服务器可能需要调用用户服务获取基本用户数据、订阅服务获取特定用户的阅读项列表、Feed条目服务获取实际条目以及评级服务获取条目列表的评级。这些数据的连接可以在多个位置发生。
订阅服务和评级服务都存储了对Feed条目和用户的引用。一种方法是在每个服务内部进行连接,但这会导致对多个服务的冗余调用。为避免这种情况,数据连接应在应用服务器级别进行,而非在服务内部。这样做有两个额外的好处:一是便于数据缓存,服务只需缓存自己数据存储中的数据,而应用服务器可以缓存任
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



