scala - Akka:由于查询参数不正确而取消路由
问题描述
所以我有一个类似这样的路线结构
pathPrexix("root"){
concat {
path("path") {
get {
parameters("someId".as[String], 'fixedValue ! "requiredValue") { params =>
}
}
},
path(Segment) { extractedValue =>
.....
}
}
}
如果用户/root/path
使用不正确的查询参数(someId
丢失或fixedValue
不等于value
)结束对端点的请求,则该请求将进一步路由到下一个路由,root/Segment
。extractedValue
在这种情况下 path
,它将失败并将由第二条路线处理的错误发送回用户。
首选行为是告诉用户他们错过了查询参数或者查询参数必须是给定值之一。有没有办法确保发生这种情况?
如果我将第二条路径移到第一条路径之上,它将捕获所有发送的请求。
解决方案
如果不匹配,您只需要complete
使用适当的错误代码:get
path("path") {
concat(
get {
parameters("someId".as[String], 'fixedValue ! "requiredValue") { params =>
}
},
complete(StatusCodes.NotFound)
)
},
您可以在回复消息中添加其他信息,但这将是非标准的,因此需要客户了解它。
推荐阅读
- angular - 在角度使用 Tabulator 时,为什么我无法访问 rowClick 函数中的外部变量?
- javascript - 将 SVGSVGElement 转换为字符串的问题
- excel - 使用“$csv->print”函数在 Perl 中将 XLSM 文件转换为 CSV 格式?
- asp.net-mvc - 在我的 MVC .NET Core 3.1 项目中,如何防止锚标记助手将区域附加到查询字符串?
- html - 如何使两个元素在单行中获得一半空间
- excel - 来自单个用户输入的多个变量
- sas - 从其他程序转换为 STATA?
- reactjs - React Js 登录初学者
- kubernetes - minikube kubectl 创建文件错误(验证数据:未设置 apiVersion)
- c# - 以编程方式确定 Azure HDInsight 定义/模板的允许值