使用 `RoutingContext::json` 方法时如何设置响应状态代码?

How can I set response status code when using `RoutingContext::json` method?

我有这个代码:

get("/signup").handler {
  // some logic
  it.response()
    .setStatusCode(409)
    .putHeader("content-type", "application/json; charset=utf-8")
    .end(jsonObjectOf(
      "error" to "EmailAlreadyInUse"
    ).toString())
}

为了简化,我想用RoutingContext::json方法:

get("/signup").handler {
  // some logic
  it
    .setStatusCode(409) // Can't do this, setStatusCode method doesn't exist in RoutingContext
    .json(jsonObjectOf(
      "error" to "EmailAlreadyInUse"
    ))
}

但是,如您所见,当使用 RoutingContext::json 方法时,我无法设置响应的状态代码。

有什么办法吗? (不使用自定义扩展函数)

您可以为此使用 Kotlin apply

it.apply {
    response().statusCode = 409
    json(jsonObjectOf("error" to "EmailAlreadyInUse"))
}