我开始学习Http4,在工作中我们可能需要将用Akka Http实现的Rest API迁移到Http4。
例如,我可以定义如下自定义指令:
trait CustomDirectives {
def extractUUID: Directive1[UUID] = {
path(Segment).flatMap { maybeuuid =>
Try(UUID.fromString(maybeuuid)) match {
case Success(result) => provide(result)
case Failure(_) =>
complete(StatusCodes.BadRequest, s"Invalid uuid: $maybeuuid")
}
}
}
}
所以每次我想提取一个UUID并验证它的时候,我都可以使用这个指令。我们还有其他的自定义指令来对头文件进行一些处理,等等。
在Http4中有没有类似于akka自定义指令的东西?
1条答案
按热度按时间7ivaypg91#
这在文档的处理路径参数部分中进行了描述
然而,就我个人而言,我发现使用Tapir或Endpoint4s等库来描述端点更容易,因为它们的DSL对我来说更直观,而且我没有将我的代码与特定的实现相耦合。