加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何在finagle中托管静态资源

发布时间:2020-12-16 18:12:17 所属栏目:安全 来源:网络整理
导读:我试图在finagle中托管静态资源,如 javascript和css文件. 我已经设法让它工作,但我必须专门配置我的路由服务中的资源文件夹的每个路由.例如: def build():RoutingService[Request with Request] = { val routingService = RoutingService.byPathObject { ca
我试图在finagle中托管静态资源,如 javascript和css文件.

我已经设法让它工作,但我必须专门配置我的路由服务中的资源文件夹的每个路由.例如:

def build():RoutingService[Request with Request] = {
      val routingService = RoutingService.byPathObject {
        case Root => ControllerRegistry.rootController.root()
        case Root / "public" / resource =>  ControllerRegistry.publicController.findPublic()
        case Root / "public" / "bootstrap"/ "css" / resource => ControllerRegistry.publicController.findPublic()

      }
      routingService
    }

def findPublic(): Service[Request,Response] = {
      val findPublic = new Service[Request,Response] {
        def apply(request: Request) = {
          Future {
            val resource = Path(request.path) match {
              case Root / "public" / resource => getResourceText(s"/public/$resource")
              case Root / "public" / "bootstrap" / "css" / resource => getResourceText(s"/public/bootstrap/css/$resource")
              case _ => throw new IllegalStateException
            }

            val response = Response()

            response.setContent(copiedBuffer(resource,UTF_8))
            response
          }
        }
      }
      findPublic
    }

现在我可以在public和public / bootstrap / css中获取任何资源,但是如果没有更多配置,我就无法获得public / bootstrap / js.

解决方法

TLDR:Finagle并不是你想做的事情的正确库.你可以使用类似 Finatra的东西,它建立在finagle之上.

长版:
Finagle旨在构建分布式系统,它不像轨道上的ruby那样的Web框架(即使finagle-http提供了非常基本的功能).它可以轻松构建彼此交互的服务(并负责负载平衡,超时,断开连接,背压,分布式跟踪……)
我们在Twitter上建立了一个基于finagle构建的Web框架库,但它尚未开源,同时您可以使用Finatra.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读