许多资源都有其生命周期:订单生成、付款、发货和交付;项目发布会安排、取消或完成。将其建模为状态机意味着列出所有状态以及它们之间允许的转换,并拒绝所有其他转换——你不能发货一个从未付款的订单,也不能取消一个已经交付的订单。
转换通常以操作(例如 POST /orders/7/cancel )或对状态字段的更新的形式公开,服务器会对其进行验证。非法转换会返回 409 Conflict 错误,因为请求格式正确,但与资源的当前状态冲突。HATEOAS 风格的响应只能包含当前合法转换的链接。
该状态只是另一个字段。客户端可以通过通用的 PUT 请求随意设置状态,从而跳过业务所依赖的状态——例如,无需取消订单即可退款,无需发货即可交付。真正起作用的是状态转换,而不是状态字段本身。
货物跟踪 API 是一个完整的状态机:POST /cargo/v1/shipments/{id}/advance将包裹移动一步,并在行尾返回 409,三次投递失败后将其退回给发件人。
所有术语 · 测试技巧 · 全部 39 个模拟 REST API
最后更新时间