我有一个用于网络商店的API。该API有一些消费者,他们有可能创建用户并下订单。
其中一位消费者建议合并两个api电话,让我们说/user/create
和/order/create
合二为一。
由此:
POST /user/create {name: 'John', email: 'john@example.org'}
POST /order/create {basket: [...], user_id: 12938}
对此:
POST /order/create
{
user: {name: 'John', email: 'john@example.org'},
basket: [...]
}
在我看来,这会降低灵活性并增加处理错误的复杂性(例如,如果此类电子邮件已存在)
解决方案的优点/缺点是什么?这种API有一些共同的标准吗?
答案 0 :(得分:1)
基本上,我认为没有这种架构错误的优点,除了单一的 - 客户端的逻辑会更简单,因为它只发送一个查询并且不关心。但这也是一种短视 - 客户将不得不处理不同的错误。
缺点:
有没有标准?基本上不,REST不是标准,而是建筑风格。但是,如果您提供将由多个客户端使用的API,则应尽可能遵守REST规则,除非您有充分理由遵守这些规则。我在这里没有看到这样的借口。