我正在使用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)"映射,我也无法做到)。

如果您找到更好的答案,请告诉我!

07-28 00:07