在spray/akka中手动抛出HTTP 404未找到异常,可以通过以下步骤实现:
import spray.http.StatusCodes
// ...
def handleRequest: Route = {
// ...
if (resourceNotFound) {
complete(StatusCodes.NotFound, "Resource not found")
} else {
// handle the request normally
}
}
在上述代码中,complete
函数用于返回响应。通过传递StatusCodes.NotFound
作为第一个参数,以及相应的错误消息作为第二个参数,可以手动抛出HTTP 404未找到异常。
import spray.httpx.SprayJsonSupport._
import spray.json.DefaultJsonProtocol._
// ...
case class ErrorResponse(message: String)
object ErrorResponse {
implicit val format = jsonFormat1(ErrorResponse.apply)
}
def handleRequest: Route = {
// ...
if (resourceNotFound) {
val errorResponse = ErrorResponse("Resource not found")
complete(StatusCodes.NotFound, errorResponse)
} else {
// handle the request normally
}
}
在上述代码中,我们定义了一个ErrorResponse
类,它包含一个message
字段。然后,我们使用jsonFormat1
宏为ErrorResponse
类生成了一个JSON格式的序列化器。最后,在处理函数中,我们创建了一个ErrorResponse
对象,并将其作为响应的实体传递给complete
函数。
这样,当资源未找到时,你就可以手动抛出HTTP 404未找到异常,并返回相应的错误消息给客户端。
领取专属 10元无门槛券
手把手带您无忧上云