Akka:由于查询参数不正确而取消路由

4ioopgfo  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(104)

我有一个类似这样的路径结构

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

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

如果用户使用不正确的查询参数(someId丢失或fixedValue不等于value)结束对/root/path端点的请求,则该请求将被进一步路由到下一个路由root/Segment。在这种情况下,extractedValue将是path,其将失败并向用户发回由第二个路由处理的错误。
首选的行为是告诉用户他们或者缺少查询参数或者查询参数必须是给定值之一。有什么方法可以确保这种情况发生吗?
如果我将第二条路径移到第一条路径的上方,它将捕获发送的所有请求。

x8diyxa7

x8diyxa71#

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

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

您可以在回复消息中放入附加信息,但这是非标准的,因此需要客户端知道它。

相关问题