gpt4 book ai didi

scala - 如何使用Spray.io构建RESTful API?

转载 作者:行者123 更新时间:2023-12-04 04:05:19 24 4
gpt4 key购买 nike

当我使用Spray.io开发RESTful API时,应如何构建我的应用程序?

我已经看到了this answer关于如何拆分Spray应用程序的信息,但是我对此并不满意,因为它似乎没有使用“每个请求一个参与者”的方法。我是否可以基于路径将来自根角色的请求转发到我的应用程序中的其他角色,并在这些角色内部定义相关的路由?

谢谢

最佳答案

您当然可以根据路径或其他任何方式将请求从一个参与者转发到另一个参与者。 checkout 我的示例项目(这是示例项目的fork的一个分支):

https://github.com/gangstead/spray-moviedb/blob/master/src/main/scala/com/example/routes/ApiRouter.scala

从接收所有请求并将其路由到处理每个服务的其他参与者的主要参与者的相关代码:

  def receive = runRoute {
compressResponseIfRequested(){
alwaysCache(simpleCache) {
pathPrefix("movies") { ctx => asb.moviesRoute ! ctx } ~
pathPrefix("people") { ctx => asb.peopleRoute ! ctx }
} ~
pathPrefix("login") { ctx => asb.loginRoute ! ctx } ~
pathPrefix("account") { ctx => asb.accountRoute ! ctx }
}
}

例如电影路线:
  def receive = runRoute {
get {
parameters('query, 'page ? 1).as(TitleSearchQuery) { query =>
val titleSearchResults = ms.getTitleSearchResults(query)
complete(titleSearchResults)
}~
path(LongNumber) { movieId =>
val movie = ms.getMovie(movieId)
complete(movie)
}~
path(LongNumber / "cast") { movieId =>
val movieCast = ms.getMovieCast(movieId)
complete(movieCast)
}~
path(LongNumber / "trailers") { movieId =>
val trailers = ms.getTrailers(movieId)
complete(trailers)
}
}
}

关于scala - 如何使用Spray.io构建RESTful API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23689077/

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