2017-08-08 1 views
2

Ich bin ziemlich neu zu akka. Ich habe eine html, css, jv Vorlage, die ich auf unseren Server stellen muss.Definieren zusätzlicher Pfade in 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) 
} 

Wie kann ich definieren die Pfade zu CSS Javascript und Bilddateien, die unter src/abc/css sind; src/abc/jv; src/abc/images.

Ich habe einige Codes mit Präfix gesehen, war aber noch nicht in der Lage, es richtig zu verwenden. Auch gibt es mehrere Bilder, sollte ich sie alle erklären? Vielen Dank!

Antwort

1

Verschieben abc Verzeichnis zu src/main/resources und tun Sie es so. Dies ist ein voll funktionierendes Beispiel:

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) 
    } 
} 

localhost:8000/hello Besuch wird index.html Seite und Vermögenswerte im abc Verzeichnis umleiten kann in dieser Seite enthalten sein.

+0

eigentlich funktioniert das nicht, stört es Sie schreiben die Importe, die Sie verwenden und das vollständige Skript? thnk Sie – uniXVanXcel

+0

@uniXVanXcel Aktualisiert. –

+0

Ok danke :) – uniXVanXcel