严格的 REST 支持者可能会说,如果您发现自己在不是 CRUD 的控制器上定义了一个操作,那么您应该强烈考虑创建一个新资源并将您的操作定义为对新资源的 CRUD 操作。
一个例子可能是改变模型状态的操作——比如购买。在此示例中,您可以创建 CompletePurchasesController 并使用 create 操作将购买状态更新为已完成,而不是在 PurchaseController 上定义“完成”操作。
假设上述情况,您显然不会将 PurchaseState 直接保存到数据库中。
我的问题是你什么时候将控制器耦合到模型?何时定义 PurchaseState 模型(未持久化)以及何时直接使用 Purchase。
这是一个复杂性和您在控制器操作中与之交互的松散关联模型的数量的问题吗?