gpt4 book ai didi

json - Scala、Akka、喷雾 : How to validate json data before processing?

转载 作者:行者123 更新时间:2023-12-03 16:28:37 26 4
gpt4 key购买 nike

当所有输入都有效时,即具有有效的键(包括大小写)和值时,我可以处理此 json。下一步是验证键并在键或值无效时返回 400(错误请求)。添加此验证的好方法是什么?

API调用

POST http://localhost:8080/api/v1/adsession
Content-Type: application/json
body {
"sessionId": "abcd123123123",
"serviceGroup": "1234",
"targetCode": {"zipcodes":"30096,30188","code2":"value2"}
}

路由处理程序
class AdSessionRoutes(services: Services)(implicit ec: ExecutionContext, log: LoggingContext) extends ApiRoute(services) {

implicit val timeout = Timeout(10 seconds)

val postSession = pathPrefix("adsession") & pathEnd & post

val route: Route = {
withService("adSession") { service =>

postSession {
entity(as[AdSession]) { adSession =>
log.info(s"Processing POST ${adSession}")
val future = (service ? CreateAdSession(adSession)).mapTo[AdSession]

onComplete(future) {
case Success(result) =>
complete(StatusCodes.Created, result)

case Failure(e) =>
log.error(s"Error: ${e.toString}")
complete(StatusCodes.InternalServerError, Message(ApiMessages.UnknownException))
}
}
}
}
}
}

模型对象
case class AdSession(
sessionId: String,
serviceGroup: String,
targetCodes: Map[String,String],
id: Option[String] = None)

object AdSessionJsonProtocol extends DefaultJsonProtocol {
implicit val adSessionFormat = jsonFormat4(AdSession)
}

entity(as[AdSession]) 确实将键映射到案例类字段,但我不确定如何捕获这些错误。我想捕获这些错误并添加额外的验证并返回 400 与有效的 json 错误响应。

最佳答案

我知道这可能有点晚了,但是从 akka-http-2.4.6 开始,您可以将验证逻辑放在案例类中。退房 this有关如何操作的信息。

关于json - Scala、Akka、喷雾 : How to validate json data before processing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28266385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com