首页 > 解决方案 > Akka:由于查询参数不正确而取消路由

问题描述

所以我有一个类似这样的路线结构

pathPrexix("root"){
  concat {
    path("path") {
      get {
        parameters("someId".as[String], 'fixedValue ! "requiredValue") { params =>

        }
      }
    },
    path(Segment) { extractedValue =>
      .....
    }
  }
} 

如果用户/root/path使用不正确的查询参数(someId丢失或fixedValue不等于value)结束对端点的请求,则该请求将进一步路由到下一个路由,root/SegmentextractedValue在这种情况下 path,它将失败并将由第二条路线处理的错误发送回用户。

首选行为是告诉用户他们错过了查询参数或者查询参数必须是给定值之一。有没有办法确保发生这种情况?

如果我将第二条路径移到第一条路径之上,它将捕获所有发送的请求。

标签: scalaakkaakka-http

解决方案


如果不匹配,您只需要complete使用适当的错误代码:get

path("path") {
  concat(
    get {
      parameters("someId".as[String], 'fixedValue ! "requiredValue") { params =>
      }
    },
    complete(StatusCodes.NotFound)
  )
},

您可以在回复消息中添加其他信息,但这将是非标准的,因此需要客户了解它。


推荐阅读