首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Akka Http迁移到Http4s -自定义指令

从Akka Http迁移到Http4s -自定义指令
EN

Stack Overflow用户
提问于 2022-06-14 23:06:41
回答 1查看 220关注 0票数 1

我开始学习Http4s,在工作中,我们可能需要将使用Akka实现的Rest迁移到Http4s。

例如,我可以定义如下自定义指令:

代码语言:javascript
复制
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并验证它时,我都可以使用这个指令。我们还有其他自定义指令来对头进行一些处理,还有更多。

在Http4s中有类似于akka自定义指令的东西吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-15 12:05:49

这在文档的处理路径参数部分中有描述。

代码语言:javascript
复制
// standard Scala extractor, matching String against UUID
object UUIDVar {
  def unapply(maybeuuid: String): Option[UUID] =
    Try(UUID.fromString(maybeuuid)).toOption
}

val usersService = HttpRoutes.of[IO] {
  // just use extractor in pattern matching
  case GET -> Root / "users" / UUIDVar(uuid) =>
    Ok(useUUIDForSth(uuid))
}

然而,就我个人而言,我发现用像塔帕尔Endpoint4s这样的库来描述端点比较容易,因为它们的DSL在我看来更直观,而且我没有将我的代码与特定的实现耦合起来。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72624288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档