我正在使用Grails RestfulController来满足以下端点:
GET /dayoffs index
GET /dayoffs/${id} show
GET /dayoffs/create create
GET /dayoffs/${id}/edit edit
POST /dayoffs save
PUT /dayoffs/${id} update
DELETE /dayoffs/${id} delete
PUT /dayoffs/${id}/approve
休假是员工提出的休假请求。管理员可以对“批准”操作执行PUT请求。
如何使Grails RestfulController支持我的自定义“批准”请求?
仅供参考:我知道这不是“完全”麻烦,但这是我项目的要求。如果使用RestfulController无法做到这一点,我将建议如何在Dayoffs RestfulController中保留标准rest方法的同时,以其他方式修补操作。
最佳答案
您始终可以“手动”完成。即使那样,事情仍然无法以我想要的方式进行。
在UrlMappings中,您可能有
static mappings = [
"/dayoffs(resources: "dayoff") // Calls DayoffController
]
您可以将其更改为
static mappings = [
"/dayoffs(resources: "dayoff") {
"/approve" (controller: "dayoff", action: "approve", method: "PUT")
}
]
这将确保对
/dayoffs/13/approve
的PUT请求将调用您的DayoffController的approve
方法,并将params.id设置为13。不幸的是,您将无法以此指定请求的格式作为url的一部分(至少,即使使用
"/approve(.$format)"
映射,我也无法做到)。如果您找到更好的答案,请告诉我!