当前位置: 首页 > 知识库问答 >
问题:

具有多路由配置的akka-http

毛景曜
2023-03-14

我正在通过一些示例学习Akka HTTP堆栈来创建一个新的REST项目(完全非UI)。我一直在使用和扩展Akka HTTP微服务示例,以通过一系列用例和配置来工作,并对Scala和Akka HTTP的良好工作感到惊喜。

目前我有一个这样的配置:

object AkkaHttpMicroservice extends App with Service {
  override implicit val system = ActorSystem()
  override implicit val executor = system.dispatcher
  override implicit val materializer = ActorMaterializer()

  override val config = ConfigFactory.load()
  override val logger = Logging(system, getClass)

  Http().bindAndHandle(routes, config.getString("http.interface"), config.getInt("http.port"))
}

routes参数只是一个简单的值,其中包含使用pathpathprefix等的典型数据。

有没有什么方法可以在多个Scala文件或某个示例中设置路由

这可能是我想得太多了,因为我是如何在Java中使用诸如@javax.ws.rs.path(“/whatever”)这样的注释在我的类上做事情的。如果是这样的话,请随意指出心态的改变。

我试着搜索几个不同的关键字集,但我相信我问错了问题(例如,1、2)。

共有1个答案

澹台正业
2023-03-14

问题1-在多个文件中合并路由

您可以很容易地组合来自多个文件的路由。

FooRouter.Scala

object FooRouter {
   val route = path("foo") {
       complete {
          Ok -> "foo"
       } 
   }       
}
object BarRouter {
   val route = path("bar") {
       complete {
          Ok -> "bar"
       } 
   }       
}
import FooRouter
import BarRouter
import akka.http.scaladsl.server.Directives._
import ...

object MainRouter {
   val routes = FooRouter.route ~ BarRouter.route
}

object AkkaHttpMicroservice extends App with Service {
  ...    
  Http().bindAndHandle(MainRouter.routes, config.getString("http.interface"), config.getInt("http.port"))
}
    null

问题3-使用注释处理路由

我不知道任何允许您在AKKA-HTTP中使用注释定义路由lib。尝试了解有关DSL路由的更多信息。这代表了http路由的一种不同方法,但它也是一种方便的工具。

 类似资料:
  • 每个路由可以有不同的属性; 一些常见的属性是: path - 应用程序在特定路由上时在浏览器中显示的URL component - 当应用程序在特定路由上时要呈现的组件 pathMatch - 默认为’prefix’的可选属性。 确定是匹配完整的网址还是仅匹配开头。 当定义一个具有空路径字符串的路径设置pathMatch为’full’时,否则它将匹配所有路径。 children - 表示此路由的子

  • 路由配置 路由的作用 路由配置是 CAT 集群流量负载均衡最重要的一环。路由配置提供了默认机器列表、多机房划分、地域划分等基本功能,路由选择的优先级为:同机房 > 同地域 > 默认机器 > 备用机器。 对于流量较高的机器,用户可以扩展相应的策略,通过路由配置将部分流量指定到低负载的机器。 配置入口 http:///localhost:8080/s/config?op=routerConfigUpd

  • V2Ray 内建了一个简单的路由功能,可以将入站数据按需求由不同的出站连接发出,以达到按需代理的目的。这一功能的常见用法是分流国内外流量,V2Ray 可以通过内部机制判断不同地区的流量,然后将它们发送到不同的出站代理。 RoutingObject RoutingObject 对应主配置文件中的routing项。 { "domainStrategy": "AsIs", "rules": []

  • 目前的配置文件和文件结构 在demo目录下有一个index.html和home.html 需要配置 访问 localhost:90/demo, 加载demo下的index.html 访问 localhost:90/demo/home, 加载demo下的home.html 应该怎么写? 我试了下在和 server 同级加了一个 server 但是没有效果, 访问是404, 不是很理解 这种写法有什么

  • 路由配置项位于 /lavas.config.js 的 router 对象。Lavas 内部使用 vue-router 进行路由管理,因此许多配置项都和 vue-router 是相同的。 Lavas 路由配置项包括: 路由模式,基准路由等 路由切换动画效果 重写路由(如果对自动生成的路由规则不满意) 路由模式和基准路由 router: { mode: 'history', base:

  • 配置 func InitRouter(r *gin.Engine) { r.GET("/sn", SignDemo) // v1 版本 GroupV1 := r.Group("/v1") { GroupV1.Any("/product/add", v1.AddProduct) GroupV1.Any("/member/add",