HTTP常用的方法就get put post delete patch, 实际业务中对一个资源对象的操作可能超过5种,api的body的报文结构如何设计,才能避免api退化成混合了rpc风格的api呢?如修改文章内容,可能修改文章的body,也可能是修改文章标题,都用put, 请求的body怎么设计更符合面向对象的范式呢?
作者回复: 下一节
共 5 条评论
3
大海浮萍
2021-07-21
读者Oops的问题,我在下一节中还是没有找到答案,这也是我一直没有在项目中使用restful api的原因,对一个聚合的下某个实体的操作(系统用例:修改、发布、撤回、审批、拒绝、同意..)大多数情况下会超过get put post delete put这五种,尤其是在复杂的业务系统中。看遍全网所有讲restful api的文章,均没有讲到这点,不知道是因为他们的业务简单,还是他们根本就没有在真实的业务系统中实践过。还请作者能再详细的分析一下这个问题,或者给出一个解法
内容理解:
1、从行为角度设计的 API,是 RPC 风格的 API,这种 RPC 风格API的方法名不是来自于领域对象,入参和出参与领域模型无光,因此它不是领域模型驱动的API设计。不过目前大部分用的是这种风格的 API ,见名知意更容易理解,比如用户注册,用register而不是POST /users。
2、RESTful API 是作为实现领域驱动 API 设计的最佳选择,它易于被其他系统整合,没有什么其它数据风格 API 可选。
3、将模型映射为 RESTful API,a.通过 URI 表示领域模型;b.根据 URI 设计 API。只有前面的领域模型没有问题,这一步很简单。
思考题:
使用GraphQL?