2017-08-08 1 views
2

Je suis assez nouveau à Akka. J'ai un modèle html, css, jv que j'ai besoin de mettre sur notre serveur.définir des chemins supplémentaires dans akka

package com.example 
import akka.http.scaladsl.marshallers.xml.ScalaXmlSupport.defaultNodeSeqMarshaller 
import akka.http.scaladsl.server.{ HttpApp, Route } 

/** 
* Server will be started calling Server_HttpApp .startServer("localhost", 8080)` 
* and it will be shutdown after pressing return. 
*/ 
object Server_HttpApp extends HttpApp with App { 

    def routes: Route = 
    pathEndOrSingleSlash { // Listens to the top `/` 
     complete("Helloo") // Completes with some text 
    } ~ 
     path("hello") { // Listens to paths that are exactly `/hello` 
     get { // Listens only to GET requests 
      //complete(<html><body><h1>Say hello to akka-http</h1></body></html>) // Completes with some text 
      getFromResource("src/abc/html/index.html") 
     } ~ 
     getFromResourceDirectory("src") 



     } 

    startServer("xyz" , 70) 
} 

Comment définir les chemins d'accès aux fichiers CSS javascript et de l'image, qui sont sous src/abc/css; src/abc/jv; src/abc/images.

J'ai vu des codes utilisant le préfixe mais je n'ai pas encore pu l'utiliser correctement. Aussi, il y a plusieurs images, dois-je les déclarer toutes? Merci!

Répondre

1

Déplacez le répertoire abc vers src/main/resources et faites-le comme ceci. Ceci est un exemple de travail complet:

import akka.actor.ActorSystem 
import akka.http.scaladsl.Http 
import akka.http.scaladsl.model.StatusCodes 
import akka.http.scaladsl.server.Directives._ 
import akka.http.scaladsl.server.Route 
import akka.stream.ActorMaterializer 

object WebServerHttpApp { 
    def main(args: Array[String]): Unit = { 
    implicit val system = ActorSystem() 
    implicit val materializer = ActorMaterializer() 
    def routes: Route = getFromResourceDirectory("abc") ~ pathPrefix("hello") { 
     get { 
     redirect("index.html", StatusCodes.PermanentRedirect) 
     } 
    } 

    Http().bindAndHandle(routes, "localhost", 8000) 
    } 
} 

Visiter localhost:8000/hello seront redirigés vers la page index.html et actifs dans le répertoire abc peuvent être inclus dans cette page.

+0

en fait cela ne fonctionne pas, cela vous dérange-t-il d'écrire les importations que vous utilisez et le script complet? merci de – uniXVanXcel

+0

@uniXVanXcel Mis à jour. –

+0

Ok merci :) – uniXVanXcel