4

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

4

1 に答える 1